布尔运算符可以和预处理器一起使用吗?
我想知道是否有可能有一个预处理器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
。