mcgrath@paris.Berkeley.EDU (Roland McGrath) (04/02/89)
I thought I knew all about ANSI name space issues. But then someone (Henry Utzoo--pardon me, Spencer--I believe) had to go and say "what about: #define bufp glop #include <stdio.h> when <stdio.h> includes: struct __filestream { /* ... */ char * bufp; }; typedef struct __filestream *FILE; ?" Now I'm not sure about anything anymore. Last I knew (which was the last time I looked at my May '88 draft--quite a while ago, and it's out of date too), every symbol in the Standard was reserved for the implementation (except that the implementation must define them to do the right things, of course), globally visible functions and variables (this is what I take `external identifiers' to mean, since they don't tell me) beginning with underscores, and all other everythings beginning with underscores following by underscores or capital letters, were reserved for the implementation, and everything else was reserved for the application. If all that is true, then all the members of the `FILE' structure (since these are not in the standard) must be in the _[_A-Z]* namespace. Is there some exception for structure members I'm not aware of? Can there be, since macro definitions don't discriminate between them and any other words? -- Roland McGrath Free Software Foundation, Inc. roland@wheaties.ai.mit.edu, mit-eddie!wheaties.ai.mit.edu!roland Copyright 1989 Roland McGrath, under the GNU General Public License, version 1.