Operatore di stringatura (#)
IL operatore di stringa (#) è un operatore del preprocessore che fa sì che venga racchiuso l'argomento effettivo corrispondente virgolette doppie. L'operatore #, generalmente chiamato the stringere operatore, trasforma l'argomento che precede in a stringa tra virgolette . È noto anche come operatore di stringificazione.
Viene generalmente utilizzato con le macro in C.
elenco di inizializzazione Python
Esempio
Il codice C seguente illustra l'utilizzo dell'operatore Stringizing (#).
C
>
>Produzione
geeksforgeeks>
Spiegazione
npm svuota la cache
Il seguente preprocessore trasforma la riga printf(mkstr(geeksforgeeks)); in printf(geeksforgeeks);
Operatore di incollaggio di token (##)
IL Operatore di incollaggio di token (##) consente ai token utilizzati come argomenti effettivi di essere concatenati per formare altri token. Spesso è utile unire due token in uno solo durante l'espansione delle macro. Questo si chiama incollamento di token o concatenazione di token.
L'operatore di pre-elaborazione '##' esegue l'incollaggio del token. Quando una macro viene espansa, i due token su entrambi i lati di ciascun operatore '##' vengono combinati in un unico token, che quindi sostituisce il '##' e i due token originali nell'espansione della macro.
Esempi
Il codice C seguente illustra l'utilizzo dell'operatore Incolla token (##).
C
nginx
// C program to illustrate (##) operator> #include> > // Macro definition using the Token-pasting operator> #define concat(a, b) a##b> int> main(> void> )> {> > int> xy = 30;> > > // Printing the concatenated value of x and y> > printf> (> '%d'> , concat(x, y));> > return> 0;> }> |
>
>
array di restituzione JavaProduzione
30>
Spiegazione
Il preprocessore trasforma printf(%d, concat(x, y)); in printf(%d, xy);
Applicazione dell'operatore Incolla token (##)
Il ## fornisce un modo per concatenare gli argomenti effettivi durante l'espansione della macro. Se un parametro nel testo sostitutivo è adiacente a un ##, il parametro viene sostituito dall'argomento effettivo, il ## e lo spazio bianco circostante vengono rimossi e il risultato viene nuovamente scansionato.