Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #1873
| From | George Neuner <gneuner2@comcast.net> |
|---|---|
| Newsgroups | comp.compilers |
| Subject | Re: Preprocessing ## |
| Date | 2017-05-15 11:31 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <17-05-006@comp.compilers> (permalink) |
| References | <17-05-003@comp.compilers> |
On Sat, 13 May 2017 08:49:36 +0200, Hans-Peter Diettrich
<DrDiettrich1@netscape.net> wrote:
>How is the C preprocessor assumed to handle the ## concatenation operator?
It concatenate tokens *prior* to expansion. If the token references a
parameter of the current macro, the (text of the) parameter is
substituted, otherwise the token is simply copied.
e.g, #define foo(x) one ## two
... foo(help) => onetwo
#define foo(x) x ## _me
... foo(help) => help_me
>In the Windows headers I found macros like
> #define foo(x) bar(##baz(x))
>where an expansion into ... (baz ... doesn't make sense, because "(baz"
>is not a valid preprocessor token. Can somebody explain the meaning and
>handling of such constructs?
>
>DoDi
>[I would guess that some macro between ( and ## expanded to
>nothing. Or it could just be one of those text editing errors. -John]
I think John probably is correct that you've found typos. If it were
the result of a macro substitution, you would see it only in the
output of the preprocessor - it would not be visible in an input
header file.
Moreover, although I'm not 100% certain, I believe the preprocessor
does not substitute inside (it's own) preprocessor definitions, but
rather only substitutes into C code.
George
Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Preprocessing ## Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-05-13 08:49 +0200
Re: Preprocessing ## Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-05-15 11:28 +0200
Re: Preprocessing ## Kaz Kylheku <686-678-9105@kylheku.com> - 2017-05-15 13:41 +0000
Re: Preprocessing ## George Neuner <gneuner2@comcast.net> - 2017-05-15 11:31 -0400
Re: Preprocessing ## Hans-Peter Diettrich <DrDiettrich1@aol.com.dmarc.email> - 2017-06-02 08:04 +0200
csiph-web