[comp.std.c] macro names

jejones@mcrware.UUCP (James Jones) (01/11/91)

3.1.2.3 seems to say that there are four name spaces, the last-named one being
a "none of the above" name space.  3.8.3 says that there is one name space
for macro names.  Is the name space mentioned in 3.8.3 one of the four listed
in 3.1.2.3?  (It's reasonable that it should be separate, since the standard
is intended not to rule out a separate preprocessor, but I'm trying to figure
out what the standard means.)  Macro names also appear not to fall in any of
the scope categories that are listed in 3.1.2.1 (aside from labels, the scopes
in 3.1.2.1 are all defined in terms of the declarator in which the identifier
appears, so they can't apply to a macro name, which is not declared as such;
3.8.3.5 also states that block structure is irrelevant to the scope of macro
definitions).

Given all this, are the identifiers named in 4.1.2.1 that don't begin with
__ or _[A-Z] (p.98, lines 7-8) reserved for use as macro names or are they not?

	James Jones

gwyn@smoke.brl.mil (Doug Gwyn) (01/12/91)

In article <4640@mcrware.UUCP> jejones@mcrware.UUCP (James Jones) writes:
>Given all this, are the identifiers named in 4.1.2.1 that don't begin with
>__ or _[A-Z] (p.98, lines 7-8) reserved for use as macro names or are they not?

I frankly don't understand why there would be any question about this.
Macro names are ordinary identifiers, as is obvious from 3.1.2.3.
The scope of macro definitions is specified in 3.8.3.5; the phases of
translation (2.1.1.2) ensure that 3.1.2.1 is not relevant for macro
names.