了解预处理器指令
Understanding preprocessor directives
为什么不编译此代码?如果我理解正确,这应该编译。我哪里错了?
#define THREADMODEL ASC
#if THREADMODEL==NOASC
THIS BLOCK SHOULDN'T BE COMPILED
#endif
int main() {
}
预处理器解释时
#if THREADMODEL==NOASC
它将用ASC
:取代THREADMODEL
#if ASC==NOASC
除非#define
d ASC
和NOASC
具有数值,否则预处理器将用0值替换它们(它接受任何未定义的符号并用0替换它们):
#if 0==0
这然后评估为1
,因此预处理器将评估该块。
要解决此问题,请尝试为ASC
和NOASC
提供不同的数值,如下所示:
#define ASC 0
#define NOASC (1 + (ASC))
希望这能有所帮助!
相关文章:
- 如何在编译时定义C++预处理器指令的值?
- 如何在 c++ 预处理器指令中使用 "#" 作为字符
- 有C++标准库 ifdef 或 ifndef 预处理器指令吗?
- 不能在预处理器指令中使用 printf
- ARMC6忽略预处理器指令
- 每个 #include 指令的预处理器的时间成本是多少?
- 是否可以转换预处理器指令中的字符?
- 如何使用C++中的处理器指令来实现快速算术运算
- 用于在运行时选择变量的 C++ 预处理器指令
- 如何使用预处理器指令包含两次具有不同代码的文件?
- 将预处理器指令作为语句的一部分
- C++ 预处理器指令函数
- 如何在整个编辑中遵循预处理器指令
- 将多个Pragma指令放入一个预处理器定义中
- Bullet Physics源代码未在X86中构建 - Visual Studio 2017中错误的预处理器指令
- 预处理器指令:为什么使用#Define的标题文件标识符与标头文件名不同
- 使用正则表达式筛选预处理器指令
- 该预处理器指令在这里可以接受
- 将使用预处理器指令来定义美元符号表示的内容会导致任何冲突
- 对测试单元使用预处理器指令的相关性