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 に答える