布尔运算符可以与预处理器一起使用吗?

时间:2010-08-02 18:21:54

标签: c++ c-preprocessor

我想知道是否可以使用预处理器OR或AND语句?我有这个代码,我希望在_DEBUG_UNIT_TEST标记(?)下运行。

我想要的是以下内容:

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

如果无法做到这一点,是否有解决方法可以实现相同的目标,而无需使用#elseif复制代码?

3 个答案:

答案 0 :(得分:80)

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

您也可以使用AND和NOT运算符。例如:

#if !defined _DEBUG && defined _UNIT_TEST 
  //Code here 
#endif 

答案 1 :(得分:9)

#if获取编译器在编译时设计评估的整数类型(1)的任何 C ++表达式。是的,您可以使用||&&,只要您使用defined(SOMETHING)来测试定义。

(1):嗯,比这更受限制;对于细节,请参阅限制here(在“处有这些附加限制”)。

答案 2 :(得分:6)

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

另外,对于记录,它是#elif,而不是#elseif