call-super-3.m
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· M 代码 · 共 55 行
M
55 行
/* Check if sending messages to super does not interfere with sending messages to classes. *//* Contributed by Ziemowit Laski <zlaski@apple.com>. *//* { dg-do run } *//* { dg-options "-lobjc" } */#include <objc/Object.h>extern void abort(void);#define CHECK_IF(expr) if(!(expr)) abort()@interface Base: Object+ (int) class_func1;- (int) instance_func1;@end@interface Derived: Base+ (int) class_func1;@end@interface Derived (Categ)- (int) instance_func1;@end@implementation Base+ (int) class_func1 { return 234; }- (int) instance_func1 { return 345; }@end@implementation Derived+ (int) class_func1 { int i = [super class_func1]; i += [Base class_func1]; return i;}@end@implementation Derived (Categ)- (int) instance_func1 { int i = [super instance_func1]; i += [Base class_func1]; /* { dg-bogus "invalid receiver type" } */ return i;}@endint main(void) { Base *base = [[Base alloc] init]; /* { dg-bogus "invalid receiver type" } */ Derived *derived = [[Derived alloc] init]; CHECK_IF([Base class_func1] == 234); /* { dg-bogus "invalid receiver type" } */ CHECK_IF([Derived class_func1] == 234 + 234); CHECK_IF([base instance_func1] == 345); CHECK_IF([derived instance_func1] == 234 + 345); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?