Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!rbutterworth From: rbutterworth@watmath.UUCP Newsgroups: comp.lang.c Subject: Re: Questions on X3J11 draft Message-ID: <3800@watmath.UUCP> Date: Fri, 5-Dec-86 10:34:55 EST Article-I.D.: watmath.3800 Posted: Fri Dec 5 10:34:55 1986 Date-Received: Sat, 6-Dec-86 00:55:50 EST References: <351@danews.ATT.COM> <7373@utzoo.UUCP> Organization: U of Waterloo, Ontario Lines: 26 Keywords: C,X3J11 > > 5) Has any attempt been made to see what percentage of existing > > code (say at AT&T or wherever) would break under the X3J11 draft? > I suspect AT&T has been paying close attention to this, although I don't > know of any actual numbers. The intent all along has been that existing > *legal* code will not break. I can think of a perfectly conforming ANSI compiler that will break almost any existing C code. Imagine a piece of code such as the following: #include { extern int getchar(); auto int c; c=getchar(); At the moment, this will blow up on (all?) existing C compilers since "getchar" is a macro. Of course everyone KNOWS this and so never puts such things into their code. But under ANSI, almost any function can be defined as a macro in the header files. That means that almost any program that contains an "extern type libCfunc();" in it can potentially break under a conforming ANSI compiler. This change may or may not be a good thing; I don't know. I do know that my own coding style has changed drastically because of it. I used to put explicit extern statements for all the functions I use, simply to document the fact that I am using them. Now I NEVER put extern statements into ANY source.c file.