У меня есть разница при компиляции исходного кода -c и исходного кода -c++.
Здесь объявление Class1 и Class2 в test.h:
#import <Foundation/Foundation.h>
@interface Class1 {
}
@end
@interface Class2 {
}
@end
Теперь это цель -C-реализация в test.m:
#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
Теперь я использую именно эту цель -Реализация C++ test.mm (точно такой же источник):
#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.mm
Но получаю ошибку:
test.mm:11 error: redefinition if 'int mystatic'
Почему я получаю эту ошибку в ObjC++, а не в ObjC?