Wklejanie token operatora (#)
Operator podwójne drukowanie znaku lub "token wklejanie" (#), jest czasami nazywany "łączących" podmiot gospodarczy jest używany w zarówno w podobnych obiektów, jak i w podobnych funkcji makr.To pozwala na oddzielne tokeny mają zostać połączone w jeden token i dlatego nie może być pierwszy lub ostatni token w definicji makra.
Jeśli parametrów formalnych w definicji makra jest poprzedzają albo po której podmiot wklejanie token, parametrów formalnych zastępuje nierozwinięta argument rzeczywiste natychmiast.Rozwinięciu makra nie jest wykonywane na argument przed do zastąpienia.
Następnie, każde wystąpienie operator wklejanie token w token ciągu jest usuwany i tokeny poprzedzających i następujących po niej są łączone.Wynikowy token musi być prawidłowym tokenem.Jeśli jest, token jest skanowany w poszukiwaniu ewentualnego zastąpienia Jeśli reprezentuje nazwę makra.Identyfikator reprezentuje nazwę, przez który będzie znany tokeny uzyskiwanej w programie przed zastąpienia.Każdy token reprezentuje token, zdefiniowany w innym miejscu, w ramach programu lub w wierszu polecenia kompilatora.Białe miejsca poprzedzających lub następujących operator jest opcjonalny.
Ten przykład ilustruje wykorzystanie oba operatory stringizing i wklejanie token określając dane wyjściowe programu:
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
Jeśli makro jest wywoływana z argumentem liczbowym, podobnie jak
paster( 9 );
plony makra
printf_s( "token" "9" " = %d", token9 );
które stają się
printf_s( "token9 = %d", token9 );
Przykład
// preprocessor_token_pasting.cpp
#include <stdio.h>
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
int main()
{
paster(9);
}