Vkládání token operátor (#)
Dvojitý znak čísla nebo "token vkládání" operátor (#), který se někdy nazývá "fúzující" operátor používá jako objekt a podobné funkce makra.Umožňuje samostatné tokeny mají být sloučeny do jediné token a proto nemůže být první nebo poslední token definice makra.
Pokud parametr formální definice makra je předchází nebo následují vkládání token operátor, formální parametr unexpanded skutečné argument nahrazuje okamžitě.Argument před náhradní není provedeno rozšíření makra.
Pak každý výskyt vkládání token operátor v token řetězec odebrán, a jsou zřetězeny tokeny předchozí a následující ji.Výsledný token musí být platný token.Pokud je token vyhledávány možnou náhradu Pokud představuje název makra.Identifikátor představuje název, kterým bude znát sloučeném tokeny v programu před náhradní.Každý token představuje token jinde, definované v rámci programu nebo kompilátoru příkazového řádku.Prázdné místo před nebo po operátor je volitelné.
Tento příklad ukazuje použití obou stringizing a vkládání token operátory v určení výstup programu:
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
Pokud makro je volána s jako číselný argument
paster( 9 );
Makro výnosů
printf_s( "token" "9" " = %d", token9 );
který se stane
printf_s( "token9 = %d", token9 );
Příklad
// preprocessor_token_pasting.cpp
#include <stdio.h>
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
int main()
{
paster(9);
}