只是尝试使用一个为2D数组保留内存的简单宏,并使用一个值初始化整个数组,但gcc会抛出此错误:
2DMakro.c:39:5: error: expected expression
ALLOC_ARRAY2D(array, int, dim1Makro, dim2Makro, initMakro);
#include <stdio.h>
#include <stdlib.h>
#define ALLOC_ARRAY2D(ARRAY,TYPE,DIM1,DIM2,INIT)\
(TYPE **ARRAY;\
ARRAY = (TYPE**) malloc(DIM1*sizeof(TYPE));\
for(int zeile = 0; zeile < DIM1; zeile++) {\
}\
for(int a = 0; a < DIM1;a++){\
for(int b = 0; b < DIM2; b++){\
ARRAY[a][b] = INIT;\
}\
}
#define DEL_ARRAY2D(ARRAY,DIM1)\
(for int zeile = 0; zeile < DIM1 ; zeile++) {\
for(int spalte = 0; spalte < DIM2 ; spalte++){\
//Gibt Speicherplatz frei
free(ARRAY[zeile]);\
}\
})
int
main(int argc, char *argv[]) {
//Variabeln
char *type,*dim1,*dim2,*init;
char* dim1P, dim2P,initMakroP;
int dim1Makro, dim2Makro, initMakro;
//char zu integer konvertieren
dim1Makro = atoi(argv[1]);
dim2Makro = atoi(argv[2]);
initMakro = atoi(argv[3]);
ALLOC_ARRAY2D(array, double, dim1Makro, dim2Makro, initMakro);
DEL_ARRAY2D(ARRAY, DIM1);
return 0;
}
嗯,这是我的.c文件,有什么建议我做错了吗? 提前谢谢。
答案 0 :(得分:4)
评论//Gibt Speicherplatz frei
正在中断宏。多行宏中的注释必须为/* like this */ \
。
请考虑使用inline
函数或其他任何函数。 C预处理器是一个编程环境,即使是注释也可能是危险的。