Ответ 1
#if defined _DEBUG || defined _UNIT_TEST
//Code here
#endif
Вы также можете использовать операторы AND и NOT. Например:
#if !defined _DEBUG && defined _UNIT_TEST
//Code here
#endif
Мне интересно, возможно ли иметь инструкцию для препроцессора ИЛИ или И? У меня есть этот код, где я хочу работать под тегами _DEBUG
или _UNIT_TEST
(?).
Я хочу что-то вроде следующего:
#if _DEBUG || _UNIT_TEST
//Code here
#endif
Если это невозможно, существует ли решение обходного пути для достижения того же самого результата без дублирования кода с помощью #elseif
?
#if defined _DEBUG || defined _UNIT_TEST
//Code here
#endif
Вы также можете использовать операторы AND и NOT. Например:
#if !defined _DEBUG && defined _UNIT_TEST
//Code here
#endif
#if
принимает любое выражение С++ интегрального типа (1), которое компилятору удается оценить во время компиляции. Поэтому да, вы можете использовать ||
и &&
, если вы используете defined(SOMETHING)
для проверки на определенность.
(1): ну, это немного более ограниченное; для nitty-gritty см. ограничения здесь (в разделе "с этими дополнительными ограничениями" ).
#if defined(_DEBUG) || defined(_UNIT_TEST)
//Code here
#endif
Также для записи это #elif
, а не #elseif
.