## operator |
Concatenation operator
|
The ## operator is a binary operator, sometimes
called the concatenation
operator because it concatenates preprocessor
tokens. It can be used only in the macro replacement text of a
#define directive. It must not appear at the start
or end of the macro replacement text. The operands of the
## operator must be parameter names for the macro
being defined. They are replaced by the corresponding macro
arguments, which are not expanded. The tokens immediately adjacent to
the ## operator are concatenated to form a single
token. If the result is not a valid token, the behavior is undefined;
otherwise, the token is expanded normally.
The evaluation order of # and
## operators is undefined. If the order is
important, you can control the order by using multiple macros.
Example
The following example prints std to
cout because the concat macro
assembles the token std from s,
t, and d:
#define s this is not expanded by the concatenation operator
#define t nor is this, so the result is the token std
#define concat(part1, part2, part3) part1 ## part2 ## part3
concat(s, t, d)::cout << "std";
See Also
# operator, #define directive
|