logo

# a ## operátorov v C

Operátor reťazenia (#)

The operátor reťazca (#) je operátor preprocesora, ktorý spôsobí uzavretie zodpovedajúceho skutočného argumentu dvojité úvodzovky. Operátor #, ktorý sa všeobecne nazýva navliekať operátor, zmení argument, ktorému predchádza, na a citovaný reťazec . Je tiež známy ako operátor stringifikácia.

Vo všeobecnosti sa používa s makrami v C.

java do kým

Príklad

Nasledujúci kód C ukazuje použitie operátora Stringizing (#).



C




>

>

abeceda a čísla
Výkon

geeksforgeeks>

Vysvetlenie

Nasledujúci preprocesor otočí riadok printf(mkstr(geeksforgeeks)); do printf(geeksforgeeks);

Operátor vkladania tokenov (##)

The Operátor vkladania tokenov (##) umožňuje tokeny používané ako skutočné argumenty zreťaziť do iných tokenov. Pri rozširovaní makier je často užitočné zlúčiť dva tokeny do jedného. Toto sa nazýva vkladanie tokenov alebo zreťazenie tokenov.

Operátor predbežného spracovania „##“ vykoná prilepenie tokenu. Keď sa makro rozbalí, dva tokeny na oboch stranách každého operátora „##“ sa spoja do jedného tokenu, ktorý potom nahradí „##“ a dva pôvodné tokeny v rozšírení makra.

Príklady

Nasledujúci kód C ukazuje použitie operátora vkladania tokenov (##).

pawandeep rajan

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

>

>

Výkon

30>

Vysvetlenie

stlc

Preprocesor transformuje printf(%d, concat(x, y)); do printf(%d, xy);

Aplikácia operátora vkladania tokenov (##)

## poskytuje spôsob, ako zreťaziť skutočné argumenty počas expanzie makra. Ak parameter v náhradnom texte susedí s znakom ##, parameter sa nahradí skutočným argumentom, znak ## a okolité prázdne miesta sa odstránia a výsledok sa znova naskenuje.