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

问题描述 投票:0回答:3

我想知道是否可以有预处理器 OR 或 AND 语句? 我有这个代码,我想在

_DEBUG
_UNIT_TEST
标签(?)下运行。

我想要类似以下的东西:

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

如果这是不可能的,是否有一种解决方法可以实现相同的效果,而不必使用

#elseif
复制代码?

c++ c-preprocessor
3个回答
132
投票
#if defined _DEBUG || defined _UNIT_TEST 
  //Code here 
#endif 

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

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

16
投票

#if
采用编译器在编译时设法计算的整型 (1) 的 any C++ 表达式。所以是的,您可以使用
||
&&
,只要您使用
defined(SOMETHING)
来测试定义即可。

(1):嗯,比这更受限制;有关详细信息,请参阅限制此处(位于“具有这些附加限制”)。


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

另外郑重声明,是

#elif
,而不是
#elseif

© www.soinside.com 2019 - 2024. All rights reserved.