Frederick Gotham said:
If we look at a programming language such as C++: When an updated Standard
comes out, everyone adopts it and abandons the previous one.
It seems though that things aren't so clear-cut in the C community. It
would seem that C99 is the most up-to-date Standard, but far more people
seem to be working off the C89 Standard.
Could someone please explain to me why this is so?
Before the C89 standard was published, the C programming community was
in a major mess. K&R1 was the closest thing to a standard, but it
wasn't enough to guarantee consistency. Different compiler vendors
implemented their own incompatible extensions, and it was very
difficult to write portable code. People waited eagerly for the ANSI
standard to appear, and vendors started implementing parts of it
before it was published.
It made the difference between not having a standard and having a
standard.
When the 1999 updated standard was issued, there was already an
existing standard that had been nearly universally adopted. It wasn't
perfect, but it did make it possible to write actual portable code.
There wasn't nearly as much demand for C99 as the was for C89; it made
the difference between having one standard and having another
different standard.
Historcial note: The C89 standard was issued by ANSI in 1989. It was
re-issued by ISO with cosmetic changes (such as section numbering
changes) in 1990; the ISO standard was then adopted by ANSI. Because
of this, I prefer to refer to it as C90 rather than C89, and as ISO C
rather than ANSI C. (ANSI C89 and ISO C90 are the same language,
described by slightly different standard documents.)
ANSI, as a member body of ISO, has adopted the 1999 ISO C standard, so
strictly speaking "ANSI C" should refer to C99, but it usually refers
to C89 or C90.
There was also a minor update in 1995.