17
這是合法的C++嗎?你可以在聲明另一個成員時使用sizeof一個成員嗎?
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
可能重複:// stackoverflow.com/questions/9656941/why-i-cant-initialize-non-const-static-member-or-static-array-in-class) –
即使最終原因是相似的,這個問題看起來與我很不一樣。 – Gorpik
C++ 11標準中的相關段落是我認爲的第5章第8段。 – jrok