英特尔C / C ++编译器在阵列初始化期间抛出错误

时间:2016-09-16 03:06:08

标签: c++ c intel icc

我有一个常规的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编译器实现此功能?

1 个答案:

答案 0 :(得分:2)

使用可变大小的数组是编译器扩展,并不是标准的C ++语言功能。 (这是C语言较新规范的标准功能。)英特尔编译器不支持此功能。

要声明变量大小的数组,您需要使用std :: vector或类似的东西。