我有这个小程序
#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]
。 另请参阅此答案以获取更多信息。