【发布时间】:2016-09-16 03:06:07
【问题描述】:
我有常规的 C++ 代码,用于将数组初始化为一个可以使用 Cygwin 上最新的 gnu 编译器正常编译的值:
int main(){
x = 10;
int my_array[x][x][x] = {0};
double my_other_array[x][x][x][x] = {0.};
return 0;
}
但是,当我将它转移到集群并执行 intel 编译器(以及用于 mic 协处理器的所有花哨的东西)时,代码将无法编译,并且它失败并出现以下错误:
错误:变量“my_array”可能未初始化
当我将实际整数而不是变量放入数组框中时,错误消息消失了。
但是,我的数组的外壳函数(在实际代码中,不是我的示例)被调用,输入决定了数组的大小......所以,虽然数组大小在执行期间不会改变,但我可以'不仅仅是将数字放在数组框中(呃,括号) - 它们需要是变量。
如何使用英特尔编译器实现此功能?
【问题讨论】:
-
“数组框”是什么意思?你是说初始化列表,
{}里面的东西吗? -
是的,声明中的括号区域:
my_array [this part],但不是大括号 -
试试
x = 10;-->const int x = 10; -
@BLUEPIXY 啊谢谢伙计...会试试...
-
@bordeo -- 如何使用 intel 编译器实现这个功能? -- 你真的想要吗? IMO,使用
std::vector远优于使用无效的 C++ 语法。首先,如果您开始使用std::vector,则无需在此处发布问题,因为该代码适用于任何 ANSI 标准 C++ 编译器。