【发布时间】:2014-10-10 17:40:55
【问题描述】:
我正在尝试通过编写宏将日志打印到文件中。 我的宏如下图所示:
#define LOG(fmt,...){\
FILE *F;\
F = fopen("output.txt","a");\
fprintf(F,fmt " %s %d",__VA_ARGS__,__FILE__,__LINE__);}
我打算用以下格式调用LOG:
LOG("values are : %d %d",num1,num2);
但是当我编译时我得到了错误
error: expected expression before ‘,’ token
fprintf(F,fmt " %s %d",__VA_ARGS__,__FILE__,__LINE__);}
谁能解释一下我哪里出错了?
【问题讨论】:
-
你知道
__FILE__是char[],而不是int,对吧?与您的问题无关,我真诚地希望在 真实 代码中的某处有一个fclose(),否则您会像筛子泄漏雨水一样泄漏流指针。 -
看看这个问题。适用于 C 和 C++。 stackoverflow.com/questions/1056411/…
-
@WhozCraig 是的,很抱歉那里的错误。主程序中有fclose。匆忙复制粘贴错过了:-)
-
@NiklasHansson 感谢您的链接。我会检查一下:)
-
我知道这可能是一个愚蠢的问题,但我得问。你的工具链支持可变参数宏,对吗?
标签: c printf c-preprocessor variadic variadic-macros