# operator and directive |
Stringify operator and null directive
|
# // Null directive
# identifier
|
|
A preprocessor directive with no directive name is called a
null
directive. It has no effect.
The # operator can also be used as a unary
operator, sometimes called the stringify
operator because it turns its operand into a
string. It can be used only in the macro replacement text of a
#define directive. It must be followed by a
parameter name for the macro being defined. The #
operator and the parameter name are replaced by a string literal
whose contents are the text of the macro argument that corresponds to
the macro parameter. The macro argument is not expanded before being
converted to a string. Whitespace in the argument is condensed to a
single space character between tokens; leading and trailing
whitespace is removed.
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 the text [now
is the
time]:
#define now then
#define is was
#define print(stuff) std::cout << "[" #stuff "]\n"
print( now is the time );
See Also
## operator, #define directive
|