Visual Studio で、Dev-C++ では以前になかったエラーが発生しました。
int project = (rand() % 5) + 1 ;
int P[project][3];
コンパイル:
エラー C2057: 期待される定数式
エラー C2466: 定数サイズ 0 の配列を割り当てることができません
エラー C2133: 'P': 不明なサイズ
このエラーを理解するのを手伝ってもらえますか?
Visual Studio で、Dev-C++ では以前になかったエラーが発生しました。
int project = (rand() % 5) + 1 ;
int P[project][3];
コンパイル:
エラー C2057: 期待される定数式
エラー C2466: 定数サイズ 0 の配列を割り当てることができません
エラー C2133: 'P': 不明なサイズ
このエラーを理解するのを手伝ってもらえますか?
この場合、メモリを動的に割り当てる必要があります。だからあなたは言うことはできませんint P[someVariable]
。あなたが使用する必要がありますint *mem = new int[someVariable]
このリンクを見てください。
C++ では、コンパイル時定数のサイズの配列のみを作成できます。
配列のサイズはP
コンパイル時に知る必要があり、定数である必要があります。コンパイラは診断メッセージを通じてそのことを警告します。
異なるコンパイラで異なる結果が得られるのはなぜですか?
ほとんどのコンパイラでは、コンパイラの拡張機能を使用して可変長配列を作成できますが、標準では承認されておらず、そのような使用法を使用すると、異なるコンパイラ実装間でプログラムを移植できなくなります。これがあなたが経験することです。
可変長配列の標準 C++ クラスはstd::vector
. この場合、あなたは得るでしょうstd::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);