Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!samsung!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!cica!iuvax!rutgers!mcnc!rti!sas!walker From: walker@sas.UUCP (Doug Walker) Newsgroups: comp.sys.amiga Subject: Re: Lattice bugs still? Message-ID: <1388@sas.UUCP> Date: 19 Dec 89 14:17:19 GMT References: <10415@etana.tut.fi> <9532@microsoft.UUCP> Reply-To: walker@sas.UUCP (Doug Walker) Organization: SAS Institute Inc, Cary NC Lines: 59 In article <9532@microsoft.UUCP> w-edwinh@microsoft.UUCP (Edwin Hoogerbeets) writes: (documentation on #pragma statements deleted) > >Why __chip? We've got the PORTABLE mechanism already. Why not use it? >Was there some good technical reason? (__chip must go. This is not >negotiable. ;-) #pragma is extremely non-portable. Each compiler can implement any #pragma keyword any way they wish, and you cannot #define a #pragma away. You can get rid of __chip simply by defining it to nothing. There is no portable way to define a non-portable feature. Period. However, according to the draft ANSI standard, December 7, 1988, section 4.1.2.1 pp 98 line 5: "All identifiers that begin with an underscore and either an upper-case letter or another underscore are always reserved for any use." and "All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary identifier and tag name spaces" >The idea behind __chip is good, though. It would be really useful to >have as a pragma. And then what would the code look like? char data[SIZE]; #pragma chip data ( or perhaps ) #pragma datasect chip char data[SIZE]; #pragma datasect near Both of these are clumsy, hard to read and, as stated above, less easily ported than the __chip keyword. Actually, now that I think about it there is a portable way to define a non- portable feature. If every compiler variant had an assigned identifier, the #pragma directive could have been implemented #pragma But there would be a question of who would define the compiler id's. In any case, ANSI did not define it this way, so there you are. ***** =*|_o_o|\\=====Doug Walker, Software Distiller======================= *|. o.| || | o |// "READY! FIRE! AIM! (Software under development!) ====== usenet: ...mcnc!rti!sas!walker plink: dwalker bix: djwalker