Draft standard questions

VLD/VMB gwyn at BRL.ARPA
Tue Jul 15 23:29:43 AEST 1986


__STR__ and __CAT__ were suggested by Tom Plum in a late-night
working session to resolve the remaining preprocessor issues,
after general committee rejection of Dave Prosser's innovative
proposals for prefix concatenation, stringize, and charize
operators.  These facilities have to be considered in the light
of a total specification of the phases of translation, which
involves such questions as whether the result of macro
substitution can be allowed to result in pasting of stuff on the
left of what was the current working set of tokens and rescan
of the result of that pasting.  Much of the difficulty comes
from an attempt to accommodate macro substitution on #include
lines, which some vendors support and claim their customers
really need for portability reasons (remember that different
OSes have different ideas of file names).

The preprocessor experts (I'm not one of them) seemed to think
that __STR__ and __CAT__ built-in macros was the best solution
under the constraints.  However, the committee members had not
had sufficient time to consider this proposal and didn't want
to risk adopting it without sufficient study.

The Reiser CPP is definitely out.  It can be modified with some
effort to conform with the current X3J11 proposal, but it has
too many technical problems to insist on everyone duplicating
its behavior.  In particular, many excellent C compilers handle
preprocessing as part of the general lexical analyzer rather
than as a totally separate pass; such tokenizing approaches
have to be accommodated by the standard.

I think Donn Seeley intends to upgrade the 4.nBSD CPP to X3J11.



More information about the Comp.lang.c mailing list