Suk*_*lay 6 c++ c-preprocessor preprocessor-directive
为什么这段代码没有编译?如果我理解正确,这应该编译.哪里我错了?
#define THREADMODEL ASC
#if THREADMODEL==NOASC
THIS BLOCK SHOULDN'T BE COMPILED
#endif
int main() {
}
Run Code Online (Sandbox Code Playgroud)
tem*_*def 13
当预处理器解释时
#if THREADMODEL==NOASC
Run Code Online (Sandbox Code Playgroud)
它将替换THREADMODEL有ASC:
#if ASC==NOASC
Run Code Online (Sandbox Code Playgroud)
除非你有#defined ASC并且NOASC有数值,否则预处理器将用0值替换它们(它接受任何未定义的符号并用0替换它们):
#if 0==0
Run Code Online (Sandbox Code Playgroud)
然后评估为1,因此预处理器将评估块.
为了解决这个问题,尽量给予不同的数值ASC和NOASC,就像这样:
#define ASC 0
#define NOASC (1 + (ASC))
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |