【发布时间】:2012-09-20 08:26:44
【问题描述】:
这是合法的 C++ 吗?
struct foo
{
int a[100];
int b[sizeof(a) / sizeof(a[0])];
};
GCC 4.6 接受它,但 MSVC 2012 不接受。对我来说似乎应该没问题,但是一点谷歌搜索没有帮助,我不知道在哪里查看标准。
MSVC 2012 给出以下输出:
error C2327: 'foo::a' : is not a type name, static, or enumerator
error C2065: 'a' : undeclared identifier
error C2070: ''unknown-type'': illegal sizeof operand
warning C4200: nonstandard extension used : zero-sized array in struct/union
【问题讨论】:
-
即使最终原因相似,但问题在我看来却大不相同。
-
我认为C++11标准中的相关段落是第5条第8段。
-
@jrok:相关段落是 C++11 §12.6.2.8。
标签: c++