C中全局结构Init的错误

时间:2019-03-05 07:26:01

标签: c

在我的一个文件中,我尝试以这种方式初始化全局结构:

MyGlobalStruct InstanceOfMyGlobalStruct;
InstanceOfMyGlobalStruct.SomeVariable = False; <<Errors>>

并得到一堆错误:
该声明没有存储类或说明符。
该声明与上一行不兼容
预期为“;”

当我在函数中执行此操作时:

void InitMyGlobalStruct()
{
    InstanceOfMyGlobalStruct.SomeVariable = False;
}

我没有收到错误,为什么?

编辑:与:有什么区别

uint a = 5;

那条全局线不会给我任何错误...

1 个答案:

答案 0 :(得分:4)

您可以在全局范围内(在任何函数之外)声明变量,但必须将不是声明的语句放入函数主体。

这是一个纯粹的声明:

InstanceOfMyGlobalStruct.SomeVariable = False;

这就是C的设计方式。

如果要在全局范围内初始化结构,可以编写:

MyGlobalStruct InstanceOfMyGlobalStruct = { .SomeVariable = False };

(如乔纳森(Jonathan)所述)