- 論壇徽章:
- 0
|
本帖最后由 vesontio 于 2015-02-10 11:07 編輯
我定義了一個宏,用來記錄程序運作時候的錯誤:
- #define log_error(format, ...)\
- hmd_error("%s (%u): " format, __FILE__, __LINE__, ##__VA_ARGS__)
復制代碼 而hmd_error是我自己定義的另外一個函數(shù):
- void hmd_error(const char *format, ...) {
- va_list args;
- va_start(args, format);
- syslog(HMD_LOG_FACILITY | LOG_ERR, format, args);
- va_end(args);
- }
復制代碼 然后我在代碼里面就直接調(diào)用這個宏了:
- log_error("This is a error message.");
復制代碼 結(jié)果,我查看log文件,發(fā)現(xiàn)__FILE__是空的(NULL),而__LINE__是幾乎隨機的數(shù)字,根本不是我想要的行號。
但是如果我直接用printf,則一切正常:
- log_error("This is a error message.");
- printf("%s(%u) This is an other message.", __FILE__, __LINE__);
復制代碼 這個時候__FILE__和__LINE__替換都是正常的。那我估計是我的宏log_error某個地方定義有誤,不知道大家能否幫忙看看,謝謝! |
|