我对C中的空结构有疑问。据我所知,从阅读标准来看,似乎不允许这样做:
6.2.5-20
- 结构类型描述了顺序分配的非空成员对象集 (并且,在某些情况下,是一个不完整的数组),每个都有一个可选的 指定的名称和可能不同的类型。
因此,在尝试编译类似的东西时并不奇怪:
struct foo
{
};
在MS VS中,引发了一些错误:
错误C2016:C要求结构或联合至少有一个成员
但是,在使用gcc -Wall -Werror
编译相同代码时,没有看到错误。所以......
gcc
以使其捕获此问题的选项? 答案 0 :(得分:7)
是的,没有成员的结构类型在C中无效。
-Werror -pedantic
的 gcc
将停止翻译。