[comp.std.c] Name space

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.