Gea-Suan Lin's BLOG for Work
#ifdef DEBUG#define debug_printf(str, ...) do { printf(str, __VA_ARGS__); } while (0)#else#define debug_printf(str, ...)#endif
__VA_ARGS__
debug_printf()
這個 macro 在遇到 debug_printf("no params"); 這樣的用法時,會展開成 printf("no params",);(注意逗號),然後就出問題了。GNU cpp 和 C99 都有對應解法,gnu cpp info 的 Variadic Macros 這一節有說明。
太感謝了,終於解決我長久以來無法解決的問題
張貼留言
2 則留言:
這個 macro 在遇到
debug_printf("no params");
這樣的用法時,會展開成
printf("no params",);
(注意逗號),然後就出問題了。
GNU cpp 和 C99 都有對應解法,gnu cpp info 的 Variadic Macros 這一節有說明。
太感謝了,終於解決我長久以來無法解決的問題
張貼留言