如何用另一个定义使if / else预处理器宏无效?

时间:2018-11-14 10:45:08

标签: c c-preprocessor conditional-compilation

假设我有一个c头文件test.h

// test.h
#ifdef A
    int a;
#else
    int b;
#endif

现在假设我想以这样的方式构建代码:如果定义了B,则同时定义ab。 有没有比以下更聪明的方法?

// test.h
#ifndef B
#ifdef A
    int a;
#else
    int b;
#endif
#else
    int a;
    int b;
#endif

谢谢

1 个答案:

答案 0 :(得分:4)

只需将两个变量分开对待,并确定何时应定义每个变量的逻辑:

#if defined(A) || defined(B)
    int a;
#endif
#if !defined(A) || defined(B)
    int b;
#endif