2014-04-18 54 views
0

为什么Visual Studio 2008中的代码不能用VC++ 15编译?vC++中的预期常量表达式

错误:C2057:预期常量表达式,C2466:虽然它在GCC 4.4工作正常不能分配恒定大小0

void foo(int a, int b) 
{ 
double arr[a][b] 
... 
} 

的阵列。我需要编译器之间的兼容性。

回答

2

为什么Visual Studio 2008中的代码不能用VC++ 15编译?

由于C风格可变长度数组不是C++语言的一部分。 GCC提供它们作为非标准扩展;一些编译器不会。

我需要编译器之间的兼容性。

然后你需要一个动态数组,例如:

std::vector< std::vector<double> > arr(a, std::vector<double>(b)); 

或者,如果你希望所有的元素是连续的,因为他们将在一个2维数组:

std::vector<double> arr(a*b); 

使用适当的算术来计算访问它时的索引。