在C ++中动态创建多维数组的好方法(理解惯用方法/良好实践)是什么?
例如,让说我有树的整数w,h和d我想创建一个数组MyEnum my_array[w][h][d]。(当然,在编译时不知道w,h和d)。
最好使用嵌套的std :: vector还是使用new或其他东西?
额外的问题:是否可以动态设置尺寸?
我正在研究用fortran编写的计算软件,但我在C中开发了一个小扩展.软件必须具有高可移植性,除了其他限制之外,还必须在GCC套件和英特尔编译器套件上进行编译.我通常在GCC上测试,一切顺利,直到我尝试使用intel套件进行编译.我在一个简单的for循环中得到了"预期的表达式"错误.我创建了一个最小的测试用例,似乎icc拒绝在for循环头内编译变量的声明.
#include <stdio.h>
int main(int argc, char** argv){
for(int i = 0; i < 5; i++){
printf("%d\n", i);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这给了我关于英特尔13,15,16,17和18(但不是19)的以下内容
$ icc test.c -o ./test
test.c(4): error: expected an expression
for(int i; i < 5; i++){
^
test.c(4): error: identifier "i" is undefined
for(int i; i < 5; i++){
^
compilation aborted for test.c (code 2)
Run Code Online (Sandbox Code Playgroud)
我不是C专家,但我看过这种形式已有数千次,GCC从未出现问题.这是英特尔最近采用的GNU扩展吗?