宏定义错误:error: expected ‘;’ before ‘if’的解决方案

    今天写了个宏来处理函数返回的结果,结果编译后总是提示:
    iplb_core.c:21:33: error: expected ‘;’ before ‘if’
    #define CORE_IF_ERROR(res,estr) if((res)<0){error_print("error:%s\n",(estr));return -1;}
但是宏的写法明明是没有问题的,按理不应该处错误的。我又找了会错,发现这句错误后边还跟着一句:
    iplb_core.c:202:2: note: in expansion of macro ‘CORE_IF_ERROR’
马上定位到202行,原来是这行的前一行忘记加“;”了。
    总结一下,gcc在预编译的时候会把宏所在语句的错误归结到宏的定义上,让人误以为是宏定义错了,其实是使用宏的语句有错误。

你可能感兴趣的:(linux,c,宏,gcc,linux)