Sdílet prostřednictvím


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);
}
  

Viz také

Referenční dokumentace

Operátory preprocesoru