Chr*_*ris 0 c++ preprocessor c-preprocessor
我有一个未设置的预处理器指令,因此我无法更改它,它要么是 true 要么是 false。
通常我会这样做:
#ifdef DIRECTIVE
// code
#endif
Run Code Online (Sandbox Code Playgroud)
但这将始终运行,因为DIRECTIVE始终已定义。
有没有一种方法可以基本上相当于:
#if DIRECTIVE
#endif
Run Code Online (Sandbox Code Playgroud)
我想我可以做
bool DirectiveValue = DIRECTIVE;
if (DirectiveValue){
}
Run Code Online (Sandbox Code Playgroud)
但我真的希望第二个代码块能够以某种方式实现。
感谢您的任何见解!
预处理器有一个#if语句,因此您可以执行以下操作:#if DIRECTIVE,它(就像通常在 C 中一样)如果表达式的值为零则测试为 false,如果表达式的值非零则测试为 true。
虽然不清楚它是否为您提供真正的优势,但还有一种中间形式:if constexpr (DIRECTIVE),它在编译时评估,而不是运行时,所以它#if在某种程度上类似于 an - 但仍然使用普通的 C++语法,并与一般语言集成,而不是它自己的小东西,其规则与编译器的其余部分略有不同。
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |