我在编译objective-c源和objective-c++源时有区别。
这里是 test.h 中 Class1 和 Class2 的声明:
#import <Foundation/Foundation.h>
@interface Class1 {
}
@end
@interface Class2 {
}
@end
现在,这是 test.m 中的 Objective-C 实现:
#import "test.h"
@implementation Class1
/* static member */
static int mystatic;
@end
@implementation Class2
/* static member */
static int mystatic;
@end
我用这个命令成功编译:
gcc -arch armv6 -isysroot /Developer/.../iPhoneOS5.0.sdk -x objective-c -c test.m
现在我完全使用了这个 Objective-C++ 实现 test.mm (完全相同的来源):
#import "test.h"
@implementation Class1
/* static member */
static int mystatic;
@end
@implementation Class2
/* static member */
static int mystatic;
@end
并使用此命令行编译(-x 选项不同):
gcc -arch armv6 -isysroot /Developer/.../iPhoneOS5.0.sdk -x objective-c++ -c test.mm
但我得到一个错误:
test.mm:11 error: redefinition if 'int mystatic'
为什么我在 ObjC++ 而不是 ObjC 中得到这个错误?