У меня есть несколько файлов конфигурации, каждый из которых содержит определение некоторого логического макроса, который должен быть установлен в 0 или 1. Затем в моем коде я проверяю значение такого макроса, чтобы решить, какую часть кода активировать. Теперь идет сложная часть: я хочу быть уверенным, что заголовок, содержащий определение моего макроса, был включен.
В следующем примере, если я забуду включить заголовочный файл, содержащий определение FOO, компилятор напечатает "мир!", В то время как я хотел бы вместо этого создать ошибку.
//in the configuration header file
#define FOO 1
//in a cpp file
#if FOO //I would like this to generate an error if I forgot to include the header file
#pragma message "Hello"
#else
#pragma message "world!"
#endif
Можно ли добиться такого поведения? Как?
Чтобы уточнить, я не спрашиваю, как генерировать ошибку, если макрос не определен, но если можно преобразовать строку #if FOO
чтобы в то же время он проверял логическое значение и генерировал ошибку, если FOO
не определен.
Дело в том, что разработчики должны знать, что их код должен содержать
SPECIAL_MACRO(FOO)
которые в то же время проверяют логическое значение FOO, как если бы это был оператор #if FOO
, и не позволяли им забыть включение заголовка, определяющего FOO
.