7
添加零,而希望通过一些C头文件(特别是stdarg.h
),我注意到一个非常奇特的线路:在C预处理语句
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
奇怪的部份是+ 0
。零是附加标识;它是写作noop
的各种数学之一。
在上述预处理器语句中添加零有什么作用?我知道那里有all sorts of weird preprocessor magic,但这看起来很荒谬。
不完全正确。预处理器评估的规则将未知的标识符标记评估为0,所以如果没有定义它就没有问题。这个问题的关键在于什么时候会被定义,而不是空的标记。 –
@JensGustedt:你是对的,我只是试图在一些测试代码中验证我的答案,并注意到它不正确。我希望现在是正确的。 –
扭曲。如果令牌为空白,我想+符号只是被解释为一元运算符。 – ApproachingDarknessFish