我有一个未设置的预处理器指令,因此我无法更改它,它是真还是假。
通常我会这样做:
#ifdef DIRECTIVE
// code
#endif
但这将始终运行,因为DIRECTIVE
始终定义。
有没有一种方法可以让我基本上相当于:
#if DIRECTIVE
#endif
我想我能做到
bool DirectiveValue = DIRECTIVE;
if (DirectiveValue){
}
但我真的希望第二个代码块以某种方式成为可能。
感谢您的任何见解!
预处理器有一个#if
语句,因此您可以执行以下操作:#if DIRECTIVE
,如果表达式的值为零,则(就像在 C 中一样)测试为 false,如果表达式的值不为零,则测试为 true。
虽然不清楚它是否为您提供了真正的优势,但还有一种中间形式:if constexpr (DIRECTIVE)
,它在编译时评估,没有运行时,所以它#if
在某种程度上类似于 an ——但仍然使用普通的 C++语法,并与一般语言集成,而不是成为其自己的小东西,规则与编译器的其余部分略有不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句