1

在 Visual Studio 中,我有一个以前在 Dev-C++ 中没有的错误:

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

汇编:

错误 C2057:预期的常量表达式
错误 C2466:无法分配常量大小的数组 0
错误 C2133:“P”:未知大小

你能帮助理解这个错误吗?

4

3 回答 3

1

在 C++ 中,您只能创建大小为编译时间常数的数组。
数组的大小P需要在编译时知道,它应该是一个常量,编译器会通过诊断消息警告你。

为什么不同编译器的结果不同?

大多数编译器允许您通过编译器扩展创建可变长度数组,但它是非标准批准的,这样的使用将使您的程序在不同的编译器实现之间不可移植。这就是你所经历的。

于 2013-03-18T07:15:16.697 回答
1

在这种情况下,您需要动态分配内存。所以你不能说int P[someVariable]。你需要使用int *mem = new int[someVariable]

看看这个链接。

于 2013-03-18T07:21:14.570 回答
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 回答