COHERENT manpages
This page displays the COHERENT manpage for ## [Token-pasting operator].
List of available manpages
Index
## -- Preprocessing Operator
Token-pasting operator
The preprocessing operator ## can be used in both object-like and function-
like macros. When used immediately before or immediately after an element
in the macro's replacement list, ## joins the corresponding preprocessor
token with its neighbor. This is sometimes called ``token pasting''.
As an example of token pasting, consider the macro:
#define printvar(number) printf("%s\n", variable ## number)
When the preprocessor reads the following line
printvar(5);
it substitutes the following code for it:
printf("%s\n", variable5);
The preprocessor throws away all white space both before and after the ##
operator. This gives you an easy way to print any one of a set of strings.
## must not be used as the first or last entry in a replacement list. All
instances of the ## operator are resolved before further macro replacement
is performed.
For more information on object-like and function-like macros, see #define.
See Also
#
#define,
C preprocessor
ANSI Standard, §6.8.3.3
Notes
Some C implementations allow token pasting by using an empty comment. For
example:
variable/**/number
The COHERENT C compiler does not recognize this ``trick'' because it is not
consistent with the Kernighan & Ritchie standard for C, which states
that a comment is white space and therefore is a token separator. In any
event, token pasting should always be performed with ##.
The ## operator may be used only within the replacement text of a
preprocessor macro definition.
The order of evaluation of multiple ## operators is unspecified.











