Path: utzoo!utgpu!watmath!clyde!ima!haddock!karl
From: karl@haddock.ima.isc.com (Karl Heuer)
Newsgroups: comp.std.c
Subject: Re: New section 3.9.6
Message-ID: <11126@haddock.ima.isc.com>
Date: 8 Dec 88 21:41:01 GMT
References: <1988Dec4.161125.20786@sq.uucp> <1988Dec5.220907.6239@utzoo.uucp>
Reply-To: karl@haddock.ima.isc.com (Karl Heuer)
Organization: Interactive Systems, Boston
Lines: 29

In article <1988Dec5.220907.6239@utzoo.uucp> henry@utzoo.uucp (Henry Spencer) writes:
>In article <1988Dec4.161125.20786@sq.uucp> msb@sq.com (Mark Brader) writes:
>>    If I am right, this change is, well, silly.  To reject on the one hand
>>    the arguments put forward by me and others about eliminating the
>>    second syntax (this rejection on the grounds of "long-ingrained
>>    equivalence"), and then on the other hand to make obsolescent *one
>>    aspect* of the equivalence, merely gives us the worst of both worlds.
>
>Actually, both ideas have the problem of breaking old code.

If the new interpretation were to apply only to prototypes, then no old code
would be broken.  As Mark and I have repeatedly pointed out, this would have
been the perfect opportunity to get rid of one more of K&R's silent rewrite
rules.  (Note that X3J11 did get rid of the rewrite whereby `f(x) float x; \
{...}' actually declared x as a double; `f(x) int x[]; {...}' is now, I
believe, the only such DWIM left in the language.)

IMHO, The Committee should have made the entire construct `f(int x[])'
obsolescent.  This would still allow the Darnell notation$ to be added to a
future Standard, if that turns out to be the Right Thing, but it would also
allow for more ambitious undertakings%.

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint
________
$ The Darnell syntax reserves array notation for pointers to non-overlapping
  areas, which is apparently what the Committee had in mind when they added
  this clause.
% In particular, the Brader-Heuer syntax, which reserves array notation for
  (surprise!) arrays, as distinct from pointers.