#define 有参数的宏定义

看别人的代码时编译一直出错

代码为:#define SERVER_PE(msg, args...)  do{printf(COLOR_RED);printf( "[SERVER] ERROR! ");printf("%s:", __FUNCTION__);printf(msg, ##args);printf( COLOR_NONE);}while(0)

报错: d:myprojects\faxsvr_test\faxsvr_test.h(44) : error C2010: '.' : unexpected in macro formal parameter list 
解决方案:#define 是宏定义命令,分为无参数宏定义和有参数宏定义,这个属于有参数的宏定义;
对于有参数的宏定义,参数部分应该为要替换为的部分的变量;
这里 SERVER_PE(msg, args...)参数部分是msg, args...写错了,少了一个逗号,应该为:#define SERVER_PE(msg, args,...)

你可能感兴趣的:(宏)