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
我认为这是不允许的。您需要指定变量的值,而不是结构:
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。