Operador token-colar (#)
O operador sinal de número de dupla ou "colagem token" (#), que às vezes é chamado o operador "Mesclar", é usada em macros semelhante ao objeto e o tipo função.Ele permite que os tokens separados a serem agrupados em um único token e portanto não pode ser o primeiro ou último token na definição de macro.
Se um parâmetro formal em uma definição de macro é precedido ou seguido pelo operador colagem de token, o parâmetro formal é imediatamente substituído pelo argumento real não expandido.Expansão da macro não é executada no argumento antes para substituição.
Em seguida, cada ocorrência do operador na colagem de token seqüência de caracteres de símbolo de for removido, e os tokens antes e após ele forem concatenados.O token resultante deve ser um token válido.Se for, o token é verificado para possível substituição se ele representa um nome de macro.O identificador representa o nome pelo qual os tokens concatenados serão conhecidos no programa antes de substituição.Cada token representa um token definido em outro local, dentro do programa ou na linha de comando do compilador.Espaço em branco antes ou após o operador é opcional.
Este exemplo ilustra o uso de ambos os operadores de stringizing e colagem de token na especificando a saída do programa:
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
Se uma macro é chamada com um argumento numérico como
paster( 9 );
a macro produz
printf_s( "token" "9" " = %d", token9 );
qual se torna
printf_s( "token9 = %d", token9 );
Exemplo
// preprocessor_token_pasting.cpp
#include <stdio.h>
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
int main()
{
paster(9);
}