1

Visual Studio で、Dev-C++ では以前になかったエラーが発生しました。

int project = (rand() % 5) + 1 ;
int P[project][3];

コンパイル:

エラー C2057: 期待される定数式
エラー C2466: 定数サイズ 0 の配列を割り当てることができません
エラー C2133: 'P': 不明なサイズ

このエラーを理解するのを手伝ってもらえますか?

4

3 に答える 3

1

この場合、メモリを動的に割り当てる必要があります。だからあなたは言うことはできませんint P[someVariable]。あなたが使用する必要がありますint *mem = new int[someVariable]

このリンクを見てください。

于 2013-03-18T07:21:14.570 に答える
1

C++ では、コンパイル時定数のサイズの配列のみを作成できます。
配列のサイズはPコンパイル時に知る必要があり、定数である必要があります。コンパイラは診断メッセージを通じてそのことを警告します。

異なるコンパイラで異なる結果が得られるのはなぜですか?

ほとんどのコンパイラでは、コンパイラの拡張機能を使用して可変長配列を作成できますが、標準では承認されておらず、そのような使用法を使用すると、異なるコンパイラ実装間でプログラムを移植できなくなります。これがあなたが経験することです。

于 2013-03-18T07:15:16.697 に答える
0

可変長配列の標準 C++ クラスはstd::vector. この場合、あなたは得るでしょうstd::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);

于 2013-03-18T12:33:14.473 に答える