logo

Operatorja # in ## v C

Operator nizanja (#)

The operator nizanja (#) je predprocesorski operater, ki povzroči, da se vanj vključi ustrezni dejanski argument dvojni narekovaji. Operator #, ki se na splošno imenuje nanizati spremeni argument pred njim v a naveden niz . Znan je tudi kot operator stringifikacije.

Na splošno se uporablja z makri v C.



java delaj medtem

Primer

Naslednja koda C prikazuje uporabo operatorja nizanja (#).

C








>

>

Izhod

geeksforgeeks>

Pojasnilo

Naslednji predprocesor obrne vrstico printf(mkstr(geeksforgeeks)); v printf(geeksforgeeks);

Operator lepljenja žetonov (##)

The Operator lepljenja žetonov (##) omogoča, da se žetoni, ki se uporabljajo kot dejanski argumenti, združijo v druge žetone. Med razširitvijo makrov je pogosto koristno združiti dva žetona v enega. To se imenuje lepljenje žetonov ali združevanje žetonov.

mysql seznam uporabnikov

Operator predprocesiranja '##' izvede lepljenje žetonov. Ko je makro razširjen, se dva žetona na obeh straneh vsakega operatorja »##« združita v en sam žeton, ki nato nadomesti »##« in dva prvotna žetona v razširitvi makra.

Primeri

Naslednja koda C prikazuje uporabo operatorja lepljenja žetonov (##).

c++ par

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

>

Rajinikanth

>

Izhod

30>

Pojasnilo

Predprocesor pretvori printf(%d, concat(x, y)); v printf(%d, xy);

Uporaba operaterja lepljenja žetonov (##)

## ponuja način za združevanje dejanskih argumentov med razširitvijo makra. Če je parameter v nadomestnem besedilu poleg ##, se parameter nadomesti z dejanskim argumentom, ## in okoliški prazen prostor sta odstranjena, rezultat pa se ponovno pregleda.