【发布时间】:2023-12-01 05:48:02
【问题描述】:
我在 IDE (Netbeans) 中声明一个结构,如下所示:
struct foo {
size_t var = 1;
}
IDE 说它是合法的。我编译了这个项目(它是一个静态库..),编译器说它是合法的(不抱怨或抛出)。
现在,由于此时我只是在测试语法,所以当我在我的程序中声明此标记的结构时,我必须询问可能知道这是否真的有效的人:
struct foo myfoo;
所以问题是:这是一个有效的初始化程序吗? (size_t var = 1) 还是编译器只是在这里抚摸我的自我?我在谷歌或类似的文档中没有找到任何东西,所以我猜它不会像我希望的那样工作。
*edit 所以我和这里的好兄弟@SO 发现它将在调试配置中编译,而不是在发布配置中编译。谁说一头不如一两千? :D
【问题讨论】:
-
查看相关问题*.com/questions/330793/…
-
@TJD 现在既快又棒!谢谢。但我仍然不明白为什么 GCC 和 IDE 让它溜走而没有呻吟。刚刚把警告调高了……我仍然能听到蟋蟀的啁啾声。大声笑。
-
你使用的是什么版本的 gcc?我刚刚尝试使用 4.4.3,但出现错误
expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token -
是的,我只是在发布模式和调试模式下自己检查了它。最初我处于调试模式。如果在发布模式下尖叫,它将无法编译。
-
听起来像是预发行版中的一个错误。你应该让 gcc 团队知道。
标签: c struct declaration definition