Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空结构定义在C中是非法的,但在C++;? 这似乎是在C++中正确编译的,但不是C(至少是Ti-28 xx DSP编译器,它发出错误的“预期声明”)是在C标准中提到的,或者是我的编译器被破解了吗?< /P> < P>空结构是C.的语法错误,C语言的语法被写出来,禁止空结构。也就是说,你不会发现它在标准中有明确的规定,它只是遵循语法 在C++中,空类确实是合法的。_C++_C_Struct - Fatal编程技术网

空结构定义在C中是非法的,但在C++;? 这似乎是在C++中正确编译的,但不是C(至少是Ti-28 xx DSP编译器,它发出错误的“预期声明”)是在C标准中提到的,或者是我的编译器被破解了吗?< /P> < P>空结构是C.的语法错误,C语言的语法被写出来,禁止空结构。也就是说,你不会发现它在标准中有明确的规定,它只是遵循语法 在C++中,空类确实是合法的。

空结构定义在C中是非法的,但在C++;? 这似乎是在C++中正确编译的,但不是C(至少是Ti-28 xx DSP编译器,它发出错误的“预期声明”)是在C标准中提到的,或者是我的编译器被破解了吗?< /P> < P>空结构是C.的语法错误,C语言的语法被写出来,禁止空结构。也就是说,你不会发现它在标准中有明确的规定,它只是遵循语法 在C++中,空类确实是合法的。,c++,c,struct,C++,C,Struct,另请注意,通常您可能会看到C标准中的一段引语,其中说“如果结构声明列表不包含命名成员,则行为未定义”。该引语作为文档中禁止空结构的部分呈现。实际上,空结构也是语法所禁止的。因此,字面上的空结构(如您的问题)是语法错误,而不是未定义的行为。上述引用适用于不同的情况:没有命名成员的结构。如果所有成员都是未命名的位字段,则结构可以以非空结束,但同时没有命名成员 struct t_empty { }; 在上述情况下,行为是未定义的。这就是上面引用的内容。它使用gcc 4.2编译得很好……有关该链接中有

另请注意,通常您可能会看到C标准中的一段引语,其中说“如果结构声明列表不包含命名成员,则行为未定义”。该引语作为文档中禁止空结构的部分呈现。实际上,空结构也是语法所禁止的。因此,字面上的空结构(如您的问题)是语法错误,而不是未定义的行为。上述引用适用于不同的情况:没有命名成员的结构。如果所有成员都是未命名的位字段,则结构可以以非空结束,但同时没有命名成员

struct t_empty {
};

在上述情况下,行为是未定义的。这就是上面引用的内容。

它使用gcc 4.2编译得很好……有关该链接中有关注释锥的讨论,请参阅:“空结构是gcc扩展。”。谢谢:)@artifact:你为什么删除你的帖子-(这是有用的。@Jason S:这是错误的。中被接受的答案是正确的。
struct S {
  int : 5;
};