App*_*ish 7 c addition zero c-preprocessor
在查看一些c头文件(特别是stdarg.h)时,我注意到一条非常特殊的线:
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
Run Code Online (Sandbox Code Playgroud)
奇怪的部分是+ 0.零是附加的身份; 这是各种数学写作之一noop.
在上面的预处理器语句中添加零的目的是什么?我知道那里有各种奇怪的预处理器魔法,但这看起来很荒谬.
Mar*_*n R 12
如果__STDC_VERSION__定义为空令牌(例如,带有#define __STDC_VERSION__),则可以避免预处理器语法错误.
(感谢Jens Gustedt指出我的答案的第一个版本是错误的.)