18
我有編譯器不同意sizeof。對於下面的代碼,Clang和GCC將編譯它,但是我必須使用的其他編譯器失敗,聲稱「非法sizeof操作數」。我對標準的閱讀說這是非法的,因爲sizeof
只能表達一個表達式(我不認爲S :: a是表達式)或類型id,但是對於GCC和Clang都是錯誤的。我明顯可以用sizeof(S().a)
代替它,它可以與我的所有編譯器一起工作。Clang和GCC接受可疑的sizeof
struct S
{
int a[32];
int b;
int c;
int d[32];
};
int main()
{
return sizeof(S::a);
}
Clang和GCC是錯的,還是我誤讀了標準?
介紹的VS2015也接受它:)你也可以請指定「其他compi lers「和相應的gcc/clang版本? – Rakete1111
[This is added in C++ 11](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html) – Praetorian
無法重現-g ++ 5.2.1,在Ubuntu 15.10上使用clang ++ 3.6.2.1 –