While looking through some c header files (specifically stdarg.h
), I noticed a very peculiar line:
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
The strange part is the + 0
. Zero is the additive identity; it's one of the various math has of writing noop
.
What purpose does adding zero have in the above preprocessor statement? I know that there's all sorts of weird preprocessor magic out there, but this just seems ridiculous.
That avoids a preprocessor syntax error if __STDC_VERSION__
is defined as an
empty token (e.g. with #define __STDC_VERSION__
).
(Thanks to Jens Gustedt for pointing out that the first version of my answer was wrong.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With