gcc编译器报告类的大小=零

我有这个小程序

#include<iostream> using namespace std; class xyz{ private: int xyz[]; // Why this line is not giving error. }; int main(int argc, char *argv[]) { cout<<sizeof(xyz); //Q=Why this code is not giving error. return 0; } 

我正在使用gcc 4.3。 请告诉我为什么我错了?

你在看的是一个g ++编译器扩展。 您可以触发警告

 ISO C++ forbids zero-size array 'xyz' 

如果使用-Wpedantic标志进行编译,则可以使用-pedantic-errors标志停止编译。 你的输出显示0的原因是g ++会把它翻译成(也不符合标准的) int[0] 。 另请参阅此答案以获取更多信息。