Intel C/C++ 编译器在数组初始化期间抛出错误

the Intel C/C++ compilers throw error during array initialization

我有常规的 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 编译器(使用所有用于麦克风协处理器的花哨的东西)时,代码将无法编译,并且失败并出现以下错误:

error: variable "my_array" may not be initialized

当我将实际整数而不是变量放入数组框中时,错误消息消失了。

但是,我的数组的容纳函数(在实际代码中,不是我的示例中)被调用,输入确定数组的大小...因此,虽然数组大小在执行期间不会改变,我不能只将数字放在数组框(呃,括号)中——它们必须是变量。


如何使用英特尔编译器实现此功能?

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

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