Operator de stringere (#)
The operator de stringere (#) este un operator de preprocesor care face ca argumentul real corespunzător să fie inclus în ghilimele duble. Operatorul #, care este în general numit stringe operator, transformă argumentul pe care îl precede în a șir citat . Este cunoscut și ca operator de stringificare.
Este folosit în general cu macrocomenzi în C.
întreg în șir
Exemplu
Următorul cod C demonstrează utilizarea operatorului Stringizing (#).
C
>
>Ieșire
cel mai frumos zâmbet din lume
geeksforgeeks>
Explicaţie
Următorul preprocesor transformă linia printf(mkstr(geeksforgeeks)); în printf(geeksforgeeks);
Operator de lipire a simbolurilor (##)
The Operator de lipire a simbolurilor (##) permite ca jetoanele folosite ca argumente reale să fie concatenate pentru a forma alte jetoane. Este adesea util să îmbinați două jetoane într-unul singur în timp ce extindeți macrocomenzi. Aceasta se numește lipire de jetoane sau concatenare de jetoane.
Operatorul de preprocesare „##” efectuează lipirea simbolurilor. Când o macrocomandă este extinsă, cele două jetoane de pe fiecare parte a fiecărui operator „##” sunt combinate într-un singur simbol, care apoi înlocuiește „##” și cele două jetoane originale în extinderea macro.
Exemple
Următorul cod C demonstrează utilizarea operatorului Token-lipting (##).
C
string.substring java
// 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;> }> |
obiectul java la json
>
>Ieșire
30>
Explicaţie
Preprocesorul transformă printf(%d, concat(x, y)); în printf(%d, xy);
Aplicarea operatorului de lipire a simbolurilor (##)
## oferă o modalitate de a concatena argumentele reale în timpul expansiunii macro. Dacă un parametru din textul de înlocuire este adiacent unui ##, parametrul este înlocuit cu argumentul real, ## și spațiul alb din jur sunt eliminate, iar rezultatul este scanat din nou.