"Ansi C" has STANDARDS!
"K&R1 C" does NOT.
Actually, K&R1 C it does have something of a standard; it just is vague
on a number of points and does not come from a country-level (or
larger) standards body. (Of course, ANSI/ISO C is vague on a number of
points too, just a lot fewer.)
With ANSI-C, there are many things that you can
assume.
With K&R1-C, there aren't.
Sure there are. The set is just smaller than it is for ANSI/ISO C, and
less well defined.
Because [...], programming in K&R1-C requires MUCH
greater knowledge
of the specific implementation, and ability to port to anything else
is NOT a given.
It's not much of a given in ANSI/ISO C, either; it's hard to build a
strictly conforming program that actually does very much that's useful.
For tasks that are VERY close to the hardware,
K&R1-C permits
use/ABUSE of implementation specifics.
So does ANSI/ISO C. It just draws the "beyond this line you are taking
advantage of implementation-specific details" line much more clearly.
A modern C compiler is, after all, allowed to accept code that the
standard says produces undefined behaviour, or that the standard
considers syntax errors; it may even produce useful results when it
does so. You just can't count on another implementation doing either.
(Just like K&R1, actually, in that regard.)
There are some circumstances under which the compiler is required to
produce "at least one diagnostic message". But the compiler is allowed
to carry on, possibly even producing a runnable program if it wants.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B