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

我想知道是否有可能有一个预处理器OR或AND语句? 我有这个代码,我想在_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取得编译器在编译时pipe理的整型(1)的任何 C ++expression式。 所以是的,你可以使用||&& ,只要你使用defined(SOMETHING)来testing定义。

(1):好吧,比这个更受限制。 对于本质,见这里的限制(在“有这些额外的限制” )。

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

另外为了logging,它是#elif ,而不是#elseif