Как аннулировать макрос препроцессора if / else с другим определением? - PullRequest
0 голосов
/ 14 ноября 2018

Предположим, у меня есть файл заголовка c test.h

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

Теперь предположим, что я хочу построить свой код таким образом, чтобы и a, и b были определены, если B определен. Есть ли умнее, чем:

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

Спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Просто обработайте две переменные по отдельности и определите логику, когда нужно определить каждую переменную:

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