如何在 C++ 预处理器中扩展布尔表达式?

ber*_*ers 1 c++ macros preprocessor expansion

以下代码不扩展布尔表达式,另请参见https://godbolt.org/z/YqbazT3eo

#define EXPAND(x) x

#define SWITCH false
EXPAND(SWITCH || defined(_DEBUG))
Run Code Online (Sandbox Code Playgroud)

我该如何正确地做才能做到

#define FLAG EXPAND(SWITCH || defined(_DEBUG))
Run Code Online (Sandbox Code Playgroud)

(或类似)并且FLAG不会依赖于以后的更改SWITCH

Hol*_*Cat 5

FLAG以后会不会依赖SWITCH的修改?

唯一的办法是这样的:

#if SWITCH || defined(_DEBUG)
#define FLAG 1
#else
#define FLAG 0
#endif
Run Code Online (Sandbox Code Playgroud)