# och ## Operatörer i C

Strängningsoperator (#)

De strängningsoperator (#) är en förprocessoroperatör som gör att motsvarande faktiska argument innesluts i dubbla citattecken. Operatorn #, som vanligtvis kallas för stränga operatör, förvandlar argumentet det föregår till en citerad sträng . Det är också känt som strängningsoperatorn.

Det används vanligtvis med makron i C.

Exempel

Följande C-kod visar hur operatorn Stringizing (#) används.

C




Produktion

geeksforgeeks 

Förklaring

Följande förprocessor vänder raden printf(mkstr(geeksforgeeks)); into printf(geeksforgeeks);

Token-klistrad operator (##)

De Token-klistrad operator (##) tillåter att tokens som används som faktiska argument sammanfogas för att bilda andra tokens. Det är ofta användbart att slå samman två tokens till en medan du expanderar makron. Detta kallas token-klistring eller token-sammansättning.

'##'-förbehandlingsoperatorn utför token-klistring. När ett makro expanderas, kombineras de två tokens på vardera sidan av varje '##'-operator till en enda token, som sedan ersätter '##' och de två ursprungliga tokens i makroexpansionen.

Exempel

Följande C-kod visar användningen av token-klistra-operatorn (##).

C




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

Produktion

30 

Förklaring

Förprocessorn transformerar printf(%d, concat(x, y)); in printf(%d, xy);

Tillämpning av token-klistra-operator (##)

## tillhandahåller ett sätt att sammanfoga faktiska argument under makroexpansion. Om en parameter i ersättningstexten ligger intill en ##, ersätts parametern av det faktiska argumentet, ## och det omgivande vita utrymmet tas bort och resultatet skannas på nytt.