Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!mit-eddie!ll-xn!ames!sdcsvax!ucsdhub!jack!man!nusdhub!rwhite From: rwhite@nusdhub.UUCP (Robert C. White Jr.) Newsgroups: comp.lang.c Subject: Re: MAJOR ANSI C FLAW (my opinion, of course) Message-ID: <256@nusdhub.UUCP> Date: Fri, 6-Nov-87 17:41:28 EST Article-I.D.: nusdhub.256 Posted: Fri Nov 6 17:41:28 1987 Date-Received: Sun, 8-Nov-87 23:16:57 EST References: <10065@brl-adm.ARPA> Organization: National University, San Diego Lines: 59 Summary: A quick example.... [of ponuding my head against the wall...] In article <10065@brl-adm.ARPA>, vis!greg@bass.nosc.MIL writes: > My understanding is that X3J11's restriction on external names will > cause the writers and standardizers of C bindings for libraries and > packages to use much less mnemonic names than they would wish. Given > all of the fancy graphics, database, window managing, mathematics, > etc. libraries and packages we're accumulating, this restriction will > significantly reduce the clarity of our code I would like to point to a windowing package which is fully compliant. These are actual external function names from the curses package included wiht our C Language Utilities set. slk_noutrefresh(); restartterm(); *boolfnames[]; garbagedlines(); ... Our system implements external identifiers which are dual case 30+ characters long. This is compliant with the X3J11 minimum requirement of 6 single case external names. You, and others, are repeatedly useing the word "restriction" which is incorrect. The proposed standard does not require the identifiers be any particular length, nor that they be unique in 6 characters. What it _does_ say is that a compiler must supply _at least_ 6 characters to it's linking enviornment, with a warning that this MINIMUM will most likeley be INCREASED to a LARGER MINIMUM at a later date. The only way to _not_ be compliant is to write a compiler which would only supply _4_ mono-case characters to it's linking environment. The extreemly low MINIMUM has been retained so as to allow the older compilers to still claim compliance. Sort of a warning period. The standard does not contain a MAXIMUM in any way [on this issue]. The crevate to this is that _if_ you want 100% portability as of this instant you will need to only use 6 mono-case characters, BUT WE ALL ALREADY KNEW THIS DIDN'T WE? In summary: YES, your Microsoft C [with 40+ dual-case externals] is compliant. YES, your local-hack C compiler with 128 dual-case is compliant. YES, your VAX C compiler with only 6 mono_case is compliant. BUT that VAX C compiler probably won't be netx year!!!!! Just write code that fits your most limiting "required" environment and stop worrying. ALL your old code will work in whatever later expansion is done to the standard as far as "will it compile and link correctly?" If it is a debugger that is limited to debugging 6-mono-case externals, you might as well re-write it now and beat the rush!! Rob. Disclaimer: "I don't care any more...." - P. Collins.