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 或类似的东西。
我有常规的 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 或类似的东西。