Компилятор должен выдавать ошибку для определенных комбинаций #define

В текущем проекте я много экспериментирую, чтобы увидеть влияние различных решений на производительность. Поскольку мне нравится хранить весь код, у меня есть много директив #ifdef, которые позволяют мне легко включать и выключать некоторые оптимизации. Однако некоторые комбинации определений не рассматриваются. Я хотел бы видеть ошибку компилятора, если это произойдет, то есть:

#define A
#define B

#ifdef A
#ifdef B
//invalid combination of defines. Compiler should raise an error.
#endif
#endif

#ifdef A
//do something
#endif
#ifdef B
//do something else
#endif

Это возможно?

4 ответа

Решение

Да. Просто используйте директиву об ошибке (#error).

#ifdef A
#ifdef B
#error "invalid combination of defines."
#endif
#endif

Используйте директиву препроцессора ошибки:

#error "Invalid combination"
#if defined(A) && defined(B)
#error invalid combination of defines
#endif
#ifdef A
#ifdef B
//invalid combination of defines. Compiler should raise an error.
#error Invalid combination
#endif
#endif
Другие вопросы по тегам