Stringing operators (#)
The virknes operators (#) ir priekšapstrādātāja operators, kas izraisa atbilstošā faktiskā argumenta iekļaušanu dubultpēdiņās. # operators, ko parasti sauc par stringizēt operators, pārvērš argumentu pirms tā par a citētā virkne . To sauc arī par stringifikācijas operatoru.
To parasti izmanto ar makro C.
tabula reaģē
Piemērs
Šis C kods parāda, kā tiek izmantots operators Stringizing (#).
C
>
>Izvade
dhl nozīme
geeksforgeeks>
Paskaidrojums
Sekojošais priekšapstrādātājs pagriež rindu printf(mkstr(geeksforgeeks)); into printf(geeksforgeeks);
Žetonu ielīmēšanas operators (##)
The Žetonu ielīmēšanas operators (##) ļauj savienot marķierus, kas tiek izmantoti kā faktiskie argumenti, veidojot citus marķierus. Bieži vien ir lietderīgi apvienot divus marķierus vienā, vienlaikus paplašinot makro. To sauc par marķiera ielīmēšanu vai marķiera savienošanu.
Pirmsapstrādes operators ## veic marķiera ielīmēšanu. Kad makro tiek izvērsts, divi marķieri abās katra operatora “##” pusēs tiek apvienoti vienā marķierā, kas pēc tam aizstāj “##” un divus sākotnējos marķierus makro paplašinājumā.
Piemēri
Šis C kods parāda marķiera ielīmēšanas operatora (##) izmantošanu.
C
iekapsulēšana 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;> }> |
rr algoritms
>
>Izvade
30>
Paskaidrojums
Priekšprocesors pārveido printf(%d, concat(x, y)); uz printf(%d, xy);
Token-ielīmēšanas operatora lietojumprogramma (##)
## nodrošina veidu, kā makro paplašināšanas laikā savienot faktiskos argumentus. Ja parametrs aizstāšanas tekstā atrodas blakus simbolam ##, parametrs tiek aizstāts ar faktisko argumentu, ## un apkārtējā atstarpe tiek noņemta, un rezultāts tiek atkārtoti skenēts.