在我的一个文件中,我尝试以这种方式初始化全局结构:
MyGlobalStruct InstanceOfMyGlobalStruct;
InstanceOfMyGlobalStruct.SomeVariable = False; <<Errors>>
并得到一堆错误:
该声明没有存储类或说明符。
该声明与上一行不兼容
预期为“;”
当我在函数中执行此操作时:
void InitMyGlobalStruct()
{
InstanceOfMyGlobalStruct.SomeVariable = False;
}
我没有收到错误,为什么?
编辑:与:有什么区别
uint a = 5;
那条全局线不会给我任何错误...
答案 0 :(得分:4)
您可以在全局范围内(在任何函数之外)声明变量,但必须将不是声明的语句放入函数主体。
这是一个纯粹的声明:
InstanceOfMyGlobalStruct.SomeVariable = False;
这就是C的设计方式。
如果要在全局范围内初始化结构,可以编写:
MyGlobalStruct InstanceOfMyGlobalStruct = { .SomeVariable = False };
(如乔纳森(Jonathan)所述)