为什么这段代码没有编译?如果我理解正确,这应该编译.哪里我错了?
#define THREADMODEL ASC #if THREADMODEL==NOASC THIS BLOCK SHOULDN'T BE COMPILED #endif int main() { }
解决方法
当预处理器解释时
#if THREADMODEL==NOASC
它将用ASC取代THREADMODEL:
#if ASC==NOASC
除非#defined ASC和NOASC具有数值,否则预处理器将用0值替换它们(它接受任何未定义的符号并用0替换它们):
#if 0==0
然后计算结果为1,因此预处理器将评估该块.
要解决此问题,请尝试为ASC和NOASC提供不同的数值,如下所示:
#define ASC 0 #define NOASC (1 + (ASC))
希望这可以帮助!