## -- 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 #ddeeffiinnee.

_S_e_e _A_l_s_o
#, #ddeeffiinnee, CC pprreepprroocceessssoorr
ANSI Standard, section 6.8.3.3

_N_o_t_e_s
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.
