Re: __FUNCTION__

Richard Henderson
2002-01-09T02:12:34Z

On Tue, Jan 08, 2002 at 03:11:47PM -0800, Greg KH wrote:
> Any reason _why_ they would want to break tons of existing code in this
> manner?

__FUNCTION__ was never a string literal in g++ because you can't decide
what the name of a template is until you instantiate it.

Having __FUNCTION__ be a magic cpp thingy means there is a translation
phase violation. Preprocessor macros are expanded in phase 4, string
concatenation happens in phase 6, syntactic and symantic analysis
doesn't happen until phase 7.

So changing this allows us to change two things: (1) the integrated
preprocessor can concatenate adjacent string literals and do lexical
analysis exactly as described in the standard, and (2) removes an
irrelevant difference between c and c++ so that at some point we can
support both with a single front-end.

r~