Variadic 宏在数字常量之前应为 ')'
Variadic macro expected ')' before numeric constant
这是实际的宏:
#ifdef DEBUG
#define debug(funcname, format, ...) \
printf(BOLD UNDERLINED REVERSE \
"DEBUG IN " __FILE__ \
" LINE " __LINE__ ":" \
RESET UNDERLINED REVERSE \
"In " funcname \
RESET REVERSE format RESET, ##__VA_ARGS__)
#else
#define debug(funcname, format, ...)
#endif
其中使用的所有常量都是定义明确的字符串常量。
我用类似的东西来称呼它:
char message[] = "Hello Whosebug !\n";
debug("main()", "Message: %s\n", message);
但我收到消息
error: expected ‘)’ before numeric constant
debug("main()", "Message: ", message);
指向右括号。
这很奇怪,因为我首先测试了宏,现在项目已经与团队一起推进了它不起作用...
那是因为
" LINE " __LINE__ ":"
扩展为语法无效
" LINE " 42 ":"
因为 __LINE__
是一个整数,而不是可以连接的字符串文字。
这是实际的宏:
#ifdef DEBUG
#define debug(funcname, format, ...) \
printf(BOLD UNDERLINED REVERSE \
"DEBUG IN " __FILE__ \
" LINE " __LINE__ ":" \
RESET UNDERLINED REVERSE \
"In " funcname \
RESET REVERSE format RESET, ##__VA_ARGS__)
#else
#define debug(funcname, format, ...)
#endif
其中使用的所有常量都是定义明确的字符串常量。 我用类似的东西来称呼它:
char message[] = "Hello Whosebug !\n";
debug("main()", "Message: %s\n", message);
但我收到消息
error: expected ‘)’ before numeric constant
debug("main()", "Message: ", message);
指向右括号。
这很奇怪,因为我首先测试了宏,现在项目已经与团队一起推进了它不起作用...
那是因为
" LINE " __LINE__ ":"
扩展为语法无效
" LINE " 42 ":"
因为 __LINE__
是一个整数,而不是可以连接的字符串文字。