a5a15b makes rb_fatal identical to Pike_fatal when debugging is not active. This doesn't work, because Pike_fatal takes just sprintf format and args, but rb_fatal takes a node pointer first. Since variadic macros exist only in ISO C 1999 and newer, I'm guessing they shouldn't be used; otherwise, it'd be simple to change the definition of rb_fatal to:
#define rb_fatal(NODE, ...) Pike_fatal(__VA_ARGS__)
What's the best way to go about this?
ChrisA
Yeah, it's been 4 years since C99 was superseded by the next standard (C11), so maybe its time is finally here... :-)
So I cleaned up Pike 8.1 to C89. I guess our release rate itsn't fast enough to keep up with C standards.
C99 would be nice, there is a lot of nice additions.
And we could remove a lot of the various ATTRIBUTE() style macros. And there are predefined types for integer-with-x-bits (fastest-with-or-at-least x bits etc). That removes another bunch of configure tests.
Also, there is of course a bunch of new alway-available functions.
And // is now valid. As is variable declarations in the code. And in for(>here<;;).
And the rounding functionality of % has been standardised. Unfortunately in the other way from the one pike uses. :)
I'm still confused that C99 isn't the default for GCC. At least not on any of my systems.
C11 is default since gcc 5.2, I think. But C99 seems to have been skipped (as the default) entirely.
pike-devel@lists.lysator.liu.se