Variadic宏预期')'在数字常量之前

Nic*_*rto 1 c c-preprocessor variadic-macros

这是实际的宏:

#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                                                                        
Run Code Online (Sandbox Code Playgroud)

所有使用的常量都是明确定义的字符串常量.我称之为:

char message[] = "Hello StackOverflow !\n";
debug("main()", "Message: %s\n", message);
Run Code Online (Sandbox Code Playgroud)

但是我收到了消息

error: expected ‘)’ before numeric constant debug("main()", "Message: ", message); 在最后的括号中徘徊.

这很奇怪,因为我第一次测试宏,现在项目已经与团队一起推进它不起作用......

Jen*_*ens 5

那是因为

 " LINE " __LINE__ ":"
Run Code Online (Sandbox Code Playgroud)

扩展到语法无效

 " LINE " 42 ":"
Run Code Online (Sandbox Code Playgroud)

因为__LINE__是一个整数,而不是可以连接的字符串文字.