-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'變體之一。 –