Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!umich!samsung!think!snorkelwacker!spdcc!merk!alliant!linus!mbunix!duncant From: duncant@mbunix.mitre.org (Thomson) Newsgroups: comp.sys.amiga.tech Subject: Re: __chip is evil Message-ID: <86113@linus.UUCP> Date: 9 Jan 90 05:47:57 GMT References: <85006@linus.UUCP> <4839@sugar.hackercorp.com> Sender: news@linus.UUCP Reply-To: duncant@mbunix.mitre.org (Thomson) Organization: The MITRE Corp. Bedford, MA Lines: 31 In article <4839@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes: > >Names beginning with two underscores or one underscore and an uppercase >letter are reserved to the implementation and may be used for any purpose >the implementer desires. Names beginning with one underscore and anything >but an uppercase letter may be used with file scope, but as externals are >reserved to the implementation. > Section 4.1.2 of (my draft of) the ANSI standard states that "All external identifiers that begin with an underscore and iether an upper-case letter or another underscore are reserved." However, this simply means that these identifiers may be defined in standard header files, so the user should not use these names. The standard does NOT say that the implementor may use these identifiers to change the syntax of the C language, as you are doing when you introduce things like "__chip". >as well as more mundane things like hiding library routines (_write) and stuff >On the other hand #pragma is not allowed to change the semantics of a program. I'm sorry, but I can't find this in the standard. Can you direct me to the appropriate paragraph? Or perhaps this is something from the "Rationale"? Again, I think that you guys are missing the point. It seems to me that the ANSI committee provided #pragma exactly for handling non-standard things, such as "__chip", which can't otherwise be done in the language. Duncan Thomson