应为vc++中的常量表达式
expected constant expression in vc++
为什么不在visual studio 2008中使用VC++15编译此代码?
错误:C2057:应为常量表达式,C2466:无法分配常量大小为0的数组。
void foo(int a, int b)
{
double arr[a][b]
...
}
尽管它在GCC 4.4中运行良好。我需要编译器之间的兼容性。
为什么这段代码不在visualstudio2008中用VC++15编译?
因为C样式可变长度数组不是C++语言的一部分。GCC将其作为非标准扩展提供;有些编译器没有。
我需要编译器之间的兼容性。
然后你需要一个动态数组,例如:
std::vector< std::vector<double> > arr(a, std::vector<double>(b));
或者,如果您希望所有元素都是连续的,就像它们在二维数组中一样:
std::vector<double> arr(a*b);
使用适当的算术来计算访问时的索引。
编译器在编译时需要具有类的确切大小,您必须使用新的运算符来动态分配内存,矢量是此类操作的最佳选择。
有关更多信息,请参阅
http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.htmlhttp://www.boost.org/doc/libs/1_39_0/libs/multi_array/doc/user.html
相关文章:
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 使用自动推导的 lambda 参数作为常量表达式
- 生成提升::hana::set 的常量表达式问题
- 为什么不能用常量表达式声明数组?
- 不是 lambda 函数中的常量表达式
- 函数调用在常量表达式中必须具有常量值
- 错误:constexpr 变量'struct2Var'必须由常量表达式初始化
- 关于在需要常量表达式的上下文中使用的glvalue常量表达式的问题
- 生成 constexpr 字符串表,不能产生常量表达式
- 整体模板参数。错误:在常量表达式中使用'this'
- 如何在满足常量表达式的同时将整数传递给指针,传递给 std::array<double、integer>?
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- 错误:'new'不能出现在常量表达式中
- 我可以写出小于 -0.5 两个 ulps 的常量表达式双精度吗?
- 编译器在传递 const 变量时返回错误:模板参数不是常量表达式
- 为什么我不能在非常量表达式上使用此模板阶乘函数?
- C++ 使用变量而不是常量表达式初始化数组
- 使用函数参数作为常量表达式的一部分 - gcc vs clang
- 片段着色器中的"错误:在 GLSL 1.30 及更高版本中禁止使用非常量表达式索引的采样器数组"