Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c extern const编译器错误:Initialiser元素不是编译时常量_Objective C_C_Clang - Fatal编程技术网

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
不是常量,而是只读变量,因此不能像在初始值设定项中那样在常量表达式中使用。