-2
我想定义一个marco来“在控制台上打印并写入文件”。 下面是我的代码,可能有人告诉我为什么它会导致“Segmentation fault(core dumped)”。printf造成的宏分段错误
#define TRC_DP(fmt, args...) \
do {\
FILE * fp = fopen("/home/debug.log","a+");\
fprintf(fp,"TRC_DP(%s:%d):\t" fmt, __func__, __LINE__, ##args);\
printf(fmt, ##args);\
fclose(fp);\
}while(0);
该宏不应以分号结尾。 – pmg
'arg ...'的使用不是标准C.即使你在标准C中有一个可变参数宏,没有人可以帮助你,除非你提供了导致错误的宏的使用示例。 – Peter
你为什么要用宏做它?写一个_function_'int TRC_DP(const char *,...)',并在'myprintf'中使用'vsprintf'变体之一。 –