gpt4 book ai didi

c - 尝试在C中使用宏

转载 作者:行者123 更新时间:2023-11-30 21:41:52 25 4
gpt4 key购买 nike

只是尝试使用一个简单的宏来为 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 文件,有什么建议我做错了什么吗?提前致谢。

最佳答案

注释//Gibt Speicherplatz frei正在中断宏。多行宏中的注释必须是 /* 像这样 */\.

考虑使用内联函数来代替,或者其他任何东西。 C 预处理器是一个编程环境,即使是注释也可能是危险的。

关于c - 尝试在C中使用宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30501399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com