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)
这是可能的,还是我只是疯了(每次我想显示调试信息时我都要输入预处理器条件)?
你不能直接这样做,不,但你可以PRINT根据是否DEBUG定义来不同地定义宏:
#ifdef DEBUG
#define PRINT(...) printf(__VA_ARGS__)
#else
#define PRINT(...) log(__VA_ARGS__)
#endif
Run Code Online (Sandbox Code Playgroud)