Q
QuantumG
Back said:Agreed. gcc is a C compiler for different platforms.
VC++ is a C/C++ compiler for Windows.
SCC is a C compiler for Cray machine.
Ch is an embeddable C interpreter for different platforms.
They use different names and have different extensions to C.
However, they all conform to the ISO C90 standard.
I think they will conform to C99 eventually.
In reply to a rant I posted on comp.lang.c. The point of my rant was
that a large majority of existing compilers should have conformed with
a large percentage of C99 back in '99. The purpose of releasing a
standard is to codify existing practice. So when C99 was released it
should have taken a few weeks for the majority of existing compilers
to be tweaked to conform. That wasn't the case. The committee didn't
codify existing practice, they made up a new language and they
released it as a standard.
It is now 2004, almost 5 years since the release of C99. One of the
most popular C compilers in the world, GCC, has yet to implement the
standard (see http://gcc.gnu.org/c99status.html) and they never will.
How can I say this with such certainty? In fact, I'll say more:
no-one intends to ever implement the standard. If you look at what
Fergus Henderson said when refering to a test program written by Tony
Finch which exercises GCC's implementation of variable length structs
you can appreciate the problem:
I think this is a defect in C99. C99 does not match existing practice
here. I note that Sun C, Compaq C, and GNU C all use the same layout
for this struct. This layout is more efficient (uses less space) than
the layout mandated by C99. I don't think the committee intended to
force implementations to be inefficient in this way and I don't think
the committee intended to force implementations to break binary
compatibility with previous releases.
- http://gcc.gnu.org/ml/gcc/2002-05/msg02858.html
GCC still produces the output Tony Finch discovered back in 2002, as
do the other compilers Fergus Henderson mentioned. I don't doubt
there is a compiler somewhere that implements this part of the
standard correctly but the existing practice of a vast majority of C
compilers is to ignore the standard and, as this is the only standard
we have, I believe that to be the death kneel of the language.
Trent Waddington