我想知道是否可以有预处理器 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
采用编译器在编译时设法计算的整型 (1) 的 any C++ 表达式。所以是的,您可以使用 ||
和 &&
,只要您使用 defined(SOMETHING)
来测试定义即可。
(1):嗯,比这更受限制;有关详细信息,请参阅限制此处(位于“具有这些附加限制”)。
#if defined(_DEBUG) || defined(_UNIT_TEST)
//Code here
#endif
另外郑重声明,是
#elif
,而不是#elseif
。