E
E. Robert Tisdale
Keith said:There are still plenty of platforms with no available C99 compiler.
Can you enumerate them?
The GNU C compiler ports almost everywhere
and is pretty near C99 compliant.
Keith said:There are still plenty of platforms with no available C99 compiler.
If you use the macro MAX(a++, b), you'd invoke fairly undefined behaviour
with one of the expressions being evaluated twice.
E. Robert Tisdale said:Can you enumerate them?
Nope.
The GNU C compiler ports almost everywhere
and is pretty near C99 compliant.
Keith said:"Almost" and "pretty near" aren't good enough for everyone's purposes.
E. Robert Tisdale said:Nonsense!
They are good enough for C90 programmers.
C programmers accepted the new C90 standard
long before it was as mature as the C99 standard is now.
I don't see why they should hold C99 to a higher standard than C90.
Do you?
The issue isn't the maturity of the standard, it's how widespread
conforming implementations are. When C90 implementations were in the
state that C99 implementations are now, C90 code (particularly code
using function prototypes) still had to be considered non-portable.
It was still common to use preprocessor tricks to allow code to
compile both under K&R and C90 compilers. There was (and still is) a
tool called "ansi2knr" which translated C90 code to K&R code.
Some users were lucky enough to work in environments were they didn't
have to be concerned about portability to pre-C90 compilers, but most
of them were sensible enough not to berate those who weren't.
By that argument we should all still be writing in K&R C instead of C89; one
must draw a line somewhere, and it's perfectly valid in many cases to make
it C99 (or C89 with very common extensions).
This practice is obsolete and should be discouraged.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.