我正在尝试制作一个自定义 printf 来打印文件/行号以及错误消息,具体取决于当前的打印级别设置。我已经为它定义了一个宏。下面给出了预处理器的代码:
#define DIE (s) \
printf(s); \
exit(0); \
#define my_print(level,s) \
if(level <= gPrintLevel) \
{ \
char *buffer = (char *)malloc(strlen(s)-1); \
if (NULL != buffer) \
{ \
sprintf(buffer,s); \
printf("[%s][%d]:%s\n",__FUNCTION__,__LINE__,buffer); \
if (level == fatal) \
{\
DIE(s);\
}\
} \
} \
我从函数内部调用上述预处理器:
myPrint(2,"Unexpected error encountered\n");
但是,当我尝试编译时出现以下编译错误:
41: error: ‘s’ was not declared in this scope
请帮忙,我做错了什么?此外,如果有人可以告诉我是否有更优雅的方式来定制上述打印语句,我们将不胜感激。提前致谢。