是否可以在多行宏中使用#if 0

Cib*_*i R 0 c c++ c-preprocessor

我想实现如下所示的东西

#define MACRO_X \
    MACRO_1 \
    MACRO_2 \
#if condition
    MACRO_3 \
#endif
    MACRO_4 \
Run Code Online (Sandbox Code Playgroud)

Hol*_*Cat 5

您不能将预处理器指令嵌入到宏中。相反,请执行以下操作:

#if condition
#define IF_COND(...) __VA_ARGS__
#else
#define IF_COND(...)
#endif
Run Code Online (Sandbox Code Playgroud)

然后:

#define MACRO_X \
    MACRO_1 \
    MACRO_2 \
    IF_COND( \
        MACRO_3 \
    ) \
    MACRO_4 \
Run Code Online (Sandbox Code Playgroud)