在不同编译器中运行,声明数组有的报错,为什么?该怎么解决
在不同编译器中运行,声明数组有的报错,为什么?
在VS2005中错误:
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2057: 应输入常量表达式
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2466: 不能分配常量大小为 0 的数组
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2133: “b”: 未知的大小
而在MinGW没有这个错误!
这是为什么啊!
------解决方案--------------------
int b[n];
是C99才支持的语法。C++标准仍然是不支持的。
mingw是gcc编译器,它扩展支持C99.
不要用这个语法。
- C/C++ code
void MergeSort2(int a[], int n) { int b[n]; Msort(a, b, 0, n-1); }
在VS2005中错误:
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2057: 应输入常量表达式
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2466: 不能分配常量大小为 0 的数组
1>g:\数据结构程序\dsexpseven\dsexpseven\dsexpseven.cpp(220) : error C2133: “b”: 未知的大小
而在MinGW没有这个错误!
这是为什么啊!
------解决方案--------------------
int b[n];
是C99才支持的语法。C++标准仍然是不支持的。
mingw是gcc编译器,它扩展支持C99.
不要用这个语法。