I use C99 for my desktop. Where do you get that "C99 isn't even
portable to my desktop"?
Presumably from your statement above that you use GCC's non-conforming
C99 implementation.
Richard does have a point, IMO. Even some WG14 Committee members have
mentioned in this group (or in comp.std.c) that C99 has been
implemented completely by a dramatically smaller number of vendors than
the Committee had anticipated prior to the Standard's release. This
observation has resulted in the Manifesto for C1x to explicitly
discourge so-called Committee inventions unless there exist a
reasonable number of existing implementations.
Most C compilers seem to have implement *parts* of C99 but only a few
have implemented it in it's entirety. This means that you have to be
far more circumspect when trying to write a maximally portable C99
program than a C90 one, so much so, that you might find yourself coding
in the subset of C99 that corresponds almost exactly to C90.
Obviously not everyone needs to write "maximally" portable code. If
you're only targeting desktops, then you can use C99 with far more
assurance, though the fact that MS refuse to implement it is quite an
irritating thorn in the side.
I'm not discussing "notquiteISO C." I'm stating that the important
thing is not so much the conformance level, but the compiler's
usability.
When you are writing for only one compiler then it's extensions and
value-added features are great, but when you are writing code meant to
compile under several compilers then the Standard starts to be quite
valuable with regards to how much common functionality you can depend
upon, and how much of your code needs to include multiple
compiler/system specific conditionally compiled code. Rewriting the
whole application for each targeted compiler is an enormous waste,
while sticking solely to what C90/C99 guarantees may also not be
feasible. The trick is in using Standard code where it will suffice and
extensions elsewhere.
Fully conformant compilers facilitate this process of producing
semi-portable code while non-conformant compilers make the job more
complicated.
<snip>