3

我有小程序

#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。请告诉我为什么我错了?

4

1 回答 1

3

您正在查看的是 g++ 编译器扩展。您可以触发警告

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

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

于 2013-09-02T07:07:24.940 回答