在c预处理器语句中添加零

在查看一些c头文件(特别是stdarg.h )时,我注意到一条非常特殊的线:

 #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L 

奇怪的部分是+ 0 。 零是附加的身份; 这是写noop的各种数学之一。

在上面的预处理器语句中添加零的目的是什么? 我知道那里有各种奇怪的预处理器魔法 ,但这看起来很荒谬。

如果将__STDC_VERSION__定义为空令牌(例如使用#define __STDC_VERSION__ ),则可以避免预处理器语法错误。

(感谢Jens Gustedt指出我的答案的第一个版本是错误的。)