【发布时间】:2013-09-02 06:57:06
【问题描述】:
我有小程序
#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。请告诉我为什么我错了?
【问题讨论】:
-
这看起来很奇怪 - 更高版本的 gcc 似乎也给出了相同的结果 (0),并且在使用
g++ -Wall ...编译时没有警告。clang对未使用的私有字段发出警告,仅此而已。 -
GCC 4.3 已经很老了,而且比新版本更不符合 C++ 标准。较新的 GCC 还提供了更好的诊断和优化。尝试将您的 GCC 更新到 GCC 4.8.1(或至少 4.7.3)并使用
gcc -Wall -g -
@Basile:我试过 gcc 4.8 还是一样。
-
@PaulR 我尝试检查“g++ -Wall -o check check.cpp”,但没有收到任何警告: