*   >> Lezen Onderwijs artikelen >> science >> programming

Inleiding tot Macro's in C

Bijna iedereen al gedefinieerd een constante in C met behulp van #define CONST 12.345

, maar slechts een kleine groep echt weet wat die lijn doet en hoe u deze functies te verkennen. Elke regel die begint met een # wordt niet verwerkt door de C-compiler, maar door de C pre-processor die deze lijnen ontleedt en produceert de code die effectief zullen worden opgesteld. In gcc, kunt u het resultaat van de voorbewerking podium te zien met behulp van gcc -E src.

cWhat de definiëren

richtlijn doet is het maken van de preprocessor vervangen ELKE optreden van de definitie door de tekst die erop volgt. De vervanging is puur tekstueel en er zijn een paar trucs die zijn echt geweldig. Ik zal het hebben over twee van hen: functie-achtige macro's en meerdere lijnen macros.Function-achtige macrosTo maken van een functie-achtige macro gewoon de gebruikelijke haakjes achter de naam van de macro en volg de naam van haar argumenten. De argumenten zal worden vervangen door de EXACT string die u doorgeven aan de macro.

Een snel voorbeeld #define print_int (x) printf ("Int% d \\ n", x); Toen riep print_int (30), wordt de macro toprintf uit te breiden ("Int% d \\ n", 30); Multiline macrosA multiline macro kan worden gebouwd zetten een \\ aan het einde van de lijn van de macro. Dit karakter te geven dat de macro gaat verder op de volgende regel. #define SWAP (a, b) {\\ a ^ = b; \\ B ^ = a; \\ A ^ = b; \\} De haakjes zijn nodig omdat dat blok moet worden beoordeeld als een enkele instructie.

Zonder het, zou de volgende niet:

als (a> b) SWAP (a, b) Macro's zijn dangerousMacros produceert fouten die moeilijk te debuggen en lastig te patch zijn. De mogelijke valkuilen zijn veel (fouten in de voorrang van de exploitanten, self-verwijzingen macro's, etc). Deze pagina hebben allemaal heel goed gedocumenteerd. Dit was een weinig introductie van een geavanceerdere toepassing van C macro's. De preprocessor is een krachtige functie en kan worden gebruikt om veel goede dingen te maken. Om meer te weten over één van deze site kunnen bezoeken.



Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.