Stringiseringsoperator (#)
Det strengoperator (#) er en præprocessor-operator, der får det tilsvarende faktiske argument til at blive indesluttet i dobbelte anførselstegn. Operatoren #, som generelt kaldes strenge operatør, forvandler argumentet det går forud til et citeret streng . Det er også kendt som strengningsoperatoren.
Det bruges generelt med makroer i C.
java streng klasse
Eksempel
Følgende C-kode demonstrerer brugen af Stringizing-operatoren (#).
C
>
>Produktion
geeksforgeeks>
Forklaring
Den følgende præprocessor vender linjen printf(mkstr(geeksforgeeks)); into printf(geeksforgeeks);
Token-indsæt operator (##)
Det Token-indsæt operator (##) tillader tokens, der bruges som faktiske argumenter, at blive sammenkædet for at danne andre tokens. Det er ofte nyttigt at flette to tokens til én, mens makroer udvides. Dette kaldes token pasting eller token-sammenkædning.
hashtabel versus hashmap
'##'-forbehandlingsoperatøren udfører token-indsættelse. Når en makro udvides, kombineres de to tokens på hver side af hver '##'-operator til et enkelt token, som derefter erstatter '##' og de to originale tokens i makroudvidelsen.
Eksempler
Den følgende C-kode demonstrerer brugen af token-indsæt-operatoren (##).
værdi af streng
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>
Forklaring
cassidy hutchinson uddannelse
Præprocessoren transformerer printf(%d, concat(x, y)); ind i printf(%d, xy);
Anvendelse af token-indsæt-operator (##)
## giver en måde at sammenkæde faktiske argumenter under makroudvidelse. Hvis en parameter i erstatningsteksten støder op til en ##, erstattes parameteren af det faktiske argument, ## og det omgivende hvide mellemrum fjernes, og resultatet scannes igen.