结构声明:声明中的有效初始值设定项?

5 c struct declaration definition

我在IDE(Netbeans)中声明了一个结构,如下所示:

struct foo { size_t var = 1; }

IDE说合法.我编译项目(它是一个静态的库..),编译器说它合法(不呻吟或抛出).

现在,因为我只是在测试语法,所以当我在我的程序中声明这个标签的结构时,我不得不问一个可能知道这是否真的有用的人:

struct foo myfoo;

所以问题是:这是一个有效的初始化器吗?(size_t var = 1)或编译器只是在这里抚摸我的自我?我没有在谷歌或这样的文档中找到任何东西,所以我猜它不会按照我希望的方式工作.

*编辑所以我和Good'ol boys @SO @想出它将在调试配置中编译但不是发布配置.谁说一个人的头比几千人好?:d

Jer*_*fin 4

我认为这是不允许的。您需要指定变量的值,而不是结构:

struct foo { size_t var; };

struct foo myfoo = { 1 };
Run Code Online (Sandbox Code Playgroud)

至于允许它的 IDE,明显的可能性是代码确实有点不同,例如:

struct foo { static const size_t var = 1; }
Run Code Online (Sandbox Code Playgroud)

...并且IDE 将其编译为 C++ 而不是 C。