Objective c extern const编译器错误:Initialiser元素不是编译时常量
我用以下方式定义了一个自定义结构Objective c extern const编译器错误:Initialiser元素不是编译时常量,objective-c,c,clang,Objective C,C,Clang,我用以下方式定义了一个自定义结构 typedef struct { CGFloat value; CGAffineTransform transform; } MyStruct; 我的目的是定义一个表示此结构的默认内容的常量 我已经尝试使用extern const: *.h文件 extern MyStruct const MyStructDefault; *m文件 MyStruct const MyStructDefault = { 0., CGAffineTransform
typedef struct {
CGFloat value;
CGAffineTransform transform;
} MyStruct;
我的目的是定义一个表示此结构的默认内容的常量
我已经尝试使用extern const
:
*.h文件
extern MyStruct const MyStructDefault;
*m文件
MyStruct const MyStructDefault = { 0., CGAffineTransformIdentity };
但是Xcode在cGraffinetTransformity
Initialiser元素不是编译时常量
我知道我可以在头文件中使用#define
,或者将MyStructDefault()
作为一个函数,但我很好奇为什么原来的方法不起作用,因为cGraffeTransformity
也被定义为extern const,此后必须是编译时常量
更新
这个问题并不是真正的重复,事实上,
extern const
不是真正的编译时解析常量,这一点并不明显。extern不是在编译时解析的,而是在链接时解析的-time@trojanfoe:与提议的副本不同的问题和答案。如果objective-C与C类似,然后,const
不是常量,而是只读变量,因此不能像在初始值设定项中那样在常量表达式中使用。extern不是在编译时解析的,而是在链接时解析的-time@trojanfoe:与提议的副本不同的问题和答案。如果objective-C与C类似,然后,const
不是常量,而是只读变量,因此不能像在初始值设定项中那样在常量表达式中使用。