Так же, как говорится в названии. Я хочу использовать макрос препроцессора в тексте оператора #error:
#define SOME_MACRO 1
#if SOME_MACRO != 0
#error "SOME_MACRO was not 0; it was [value of SOME_MACRO]"
#endif
В этом примере я хочу, чтобы препроцессор преобразовал [value of SOME_MACRO]
в фактическое значение SOME_MACRO
, которое в данном случае равно 1. Это должно произойти до того, как препроцессор, компилятор или любые другие процессы #error напечатает вывод ошибки
Есть ли способ сделать это или это просто невозможно?
Я не хочу знать, существует ли стандартный способ ISO C ++ для этого, потому что на самом деле директива препроцессора #error
не указана ни в одном стандарте ISO C ++. Однако я знаю, что GCC и Visual C ++ поддерживают #error
. Но мой вопрос не относится к этим компиляторам, мне просто любопытно, может ли это сделать какой-либо компилятор / препроцессор C / C ++.
Я пытался найти эту тему, но безуспешно.