Булевы операторы могут использоваться с препроцессором?

Я задающийся вопросом, если это возможный иметь препроцессор ИЛИ или И оператор? У меня есть этот код, где я хочу работать под _DEBUG или _UNIT_TEST теги (?).

То, что я хочу, является чем-то как следующее:

#if _DEBUG || _UNIT_TEST
  //Code here
#endif

Если это не возможно, там обходное решение для достижения того же самого, не имея необходимость копировать код с помощью a #elseif?

65
задан Brian Tompsett - 汤莱恩 16 June 2016 в 09:27
поделиться

3 ответа

#if defined _DEBUG || defined _UNIT_TEST 
  //Code here 
#endif 

Можно также использовать операторы AND и NOT. For instance:

#if !defined _DEBUG && defined _UNIT_TEST 
  //Code here 
#endif 
89
ответ дан 24 November 2019 в 15:27
поделиться

#if принимает любое выражение C ++ целочисленного типа (1), которое компилятору удается вычислить во время компиляции. Итак, да, вы можете использовать || и && , если вы используете defined (SOMETHING) для проверки определенности.

(1): ну, это немного более ограничено, чем это; для более подробного ознакомления с ограничениями здесь (на «с этими дополнительными ограничениями» ).

13
ответ дан 24 November 2019 в 15:27
поделиться
#if defined(_DEBUG) || defined(_UNIT_TEST)
  //Code here
#endif

Также для записи: #elif , а не #elseif .

6
ответ дан 24 November 2019 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: