5

我有一个关于 C 中的空结构的问题。据我阅读标准可以看出,它们似乎是不允许的:

6.2.5-20

结构类型描述了一组顺序分配的非空成员对象(在某些情况下,还描述了一个不完整的数组),每个对象都有一个可选的指定名称和可能的不同类型。

因此,在尝试编译以下内容时并不奇怪:

struct foo
{
};

在 MS VS 中,抛出了一些错误:

错误 C2016:C 要求结构或联合至少有一个成员

但是,在编译相同的代码时gcc -Wall -Werror没有看到任何错误。所以...

  1. 我是否正确阅读了 C 中不允许这样做的规范?(更令人惊讶的是,微软做对了吗?!)
  2. 是否有可以传递的选项gcc以使其捕获此问题?
4

1 回答 1

7
  1. 是的,没有成员的结构类型在 C 中无效。

  2. -Werror -pedanticwithgcc将停止翻译。

于 2013-03-14T16:58:55.320 回答