私はこれに精通していませんでした。Googleで検索しましたが、答えが見つかりませんでした。だから、私の質問を投稿してください。次のプログラムを試してみました:
#include <iostream>
class test
{
static char a[];
static int b[];
};
int main()
{
test t;
}
MSVS 2010 および g++ 4.8.1 では、警告なしで正常にコンパイルされます。また、C++14 コンパイラでも問題なくコンパイルされます。(ここでライブデモを参照してください。 ) では、C++ 標準はこれについてどこで述べているのでしょうか? テスト クラスの char 配列の宣言から static キーワードを削除すると、g++ でコマンド ライン オプションISO C++ forbids zero size array
を使用し、MSVS 2010 コンパイラでオプションを使用すると、コンパイラでエラーが発生します。だから、私の質問は次のとおりです。-pedantic-errors
/Za
error C2133: 'test::a' : unknown size
1) 未知のサイズの静的配列の使用は何ですか?
2)後でそれらのサイズを指定してその配列要素にアクセスするにはどうすればよいですか? 私は本当に混乱しています。
3) static キーワードを削除するとコンパイル エラーが発生するのはなぜですか?
誰かが簡単な例を使って説明してくれるとよいでしょう。
ありがとう。