众所周知,C++中的数组长度是必须确定的。然后我们可以使用:
const int MAX_Length=100;
或者:
#define MAX_LENGTH 100
在编译之前确定数组的长度。但是,当我阅读 lippman 的《c++ Primer》一书时,在第 5 版的第 3.5.1 章中,它说:数组的长度必须是一个常量表达式。那么问题来了:
typedef enum Length{LEN1=100, LEN2, LEN3, LEN4}LEN;
LEN MAX_Length=LEN2; //101
int iArray[LEN2]; //attention
代码在mingw32-g++中编译成功。但是在VS2008中失败了,错误是:
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'iArray' : unknown size
而且我认为枚举值是恒定的,所以它应该用作数组的长度。正确的?
我很困惑,你能帮帮我吗?谢谢你。