我想知道是否可以使用预处理器OR或AND语句?我有这个代码,我希望在_DEBUG
或_UNIT_TEST
标记(?)下运行。
我想要的是以下内容:
#if _DEBUG || _UNIT_TEST
//Code here
#endif
如果无法做到这一点,是否有解决方法可以实现相同的目标,而无需使用#elseif
复制代码?
答案 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
。