我有一个常规的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编译器(包含麦克风协处理器的所有奇特内容)时,代码将无法编译,并且失败并出现以下错误:
错误:变量“my_array”可能未初始化
当我将实际整数放在数组框中而不是变量时,错误消息消失。
然而,我的数组的外壳功能(在实际代码中,而不是我的例子中)被输入调用,这些输入决定了数组的大小......所以,虽然数组大小在执行期间没有改变,但我可以只是将数字放在数组框(呃,括号)中 - 它们需要是变量。
如何使用intel编译器实现此功能?
答案 0 :(得分:2)
使用可变大小的数组是编译器扩展,并不是标准的C ++语言功能。 (这是C语言较新规范的标准功能。)英特尔编译器不支持此功能。
要声明变量大小的数组,您需要使用std :: vector或类似的东西。