试图在C中使用宏

时间:2015-05-28 08:41:22

标签: c gcc

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

1 个答案:

答案 0 :(得分:4)

评论//Gibt Speicherplatz frei正在中断宏。多行宏中的注释必须为/* like this */ \

请考虑使用inline函数或其他任何函数。 C预处理器是一个编程环境,即使是注释也可能是危险的。