- 论坛徽章:
- 0
|
本帖最后由 vesontio 于 2015-02-10 11:07 编辑
我定义了一个宏,用来记录程序运作时候的错误:
- #define log_error(format, ...)\
- hmd_error("%s (%u): " format, __FILE__, __LINE__, ##__VA_ARGS__)
复制代码 而hmd_error是我自己定义的另外一个函数:
- void hmd_error(const char *format, ...) {
- va_list args;
- va_start(args, format);
- syslog(HMD_LOG_FACILITY | LOG_ERR, format, args);
- va_end(args);
- }
复制代码 然后我在代码里面就直接调用这个宏了:
- log_error("This is a error message.");
复制代码 结果,我查看log文件,发现__FILE__是空的(NULL),而__LINE__是几乎随机的数字,根本不是我想要的行号。
但是如果我直接用printf,则一切正常:
- log_error("This is a error message.");
- printf("%s(%u) This is an other message.", __FILE__, __LINE__);
复制代码 这个时候__FILE__和__LINE__替换都是正常的。那我估计是我的宏log_error某个地方定义有误,不知道大家能否帮忙看看,谢谢! |
|