C:宏中的预处理器?

Mat*_*ell 3 c macros c-preprocessor

有没有办法在宏内使用预处理器关键字?如果有某种逃避角色或某事,我不知道.

例如,我想创建一个扩展为此的宏:

#ifdef DEBUG
    printf("FOO%s","BAR");
#else
    log("FOO%s","BAR");
#endif
Run Code Online (Sandbox Code Playgroud)

由此:

PRINT("FOO%s","BAR");
Run Code Online (Sandbox Code Playgroud)

这是可能的,还是我只是疯了(每次我想显示调试信息时我都要输入预处理器条件)?

Jam*_*lis 6

你不能直接这样做,不,但你可以PRINT根据是否DEBUG定义来不同地定义宏:

#ifdef DEBUG
    #define PRINT(...) printf(__VA_ARGS__)
#else 
    #define PRINT(...) log(__VA_ARGS__)
#endif
Run Code Online (Sandbox Code Playgroud)