69,366
社区成员
发帖
与我相关
我的任务
分享
#define SUBSYS_NO 1
#define MDLNO_COMM 1
#define PRINT_INFO 1
#define COMM_INFO SUBSYS_NO, MDLNO_COMM, PRINT_INFO
#define the_print printf
#define my_print(subsystem, module, level, format, ...) the_print(format, ##__VA_ARGS__)
my_print(1, 1, 1, "test print\n");
my_print(1, 1, 1, "test print %d\n", 1);
/* 这一句编译错误,宏展开后编译器认为参数个数不够 */
my_print(COMM_INFO, "test print\n");
#define COMM_INFO SUBSYS_NO, MDLNO_COMM, PRINT_INFO
int main()
{
printf("test print\n" );
printf("test print\n" );
printf( );
return 0;
}
预处理.i文件后的代码 你宏替换后是空的