GeeksforGeeks

Compileren van een C programma – Achter de schermen

Een Preprocessor is een systeemsoftware (een computerprogramma dat is ontworpen om op de hardware van de computer en op toepassingsprogramma’s te draaien). Het voert preprocessing uit van de High Level Language (HLL). De voorbewerking is de eerste stap van het taalverwerkingssysteem. Het taalverwerkingssysteem vertaalt de taal op hoog niveau naar machinetaal of absolute machinecode (d.w.z. naar de vorm die door de machine kan worden begrepen).

  • De preprocessor is niet op de hoogte van de reikwijdte regels van C. Preprocessor directives zoals #define worden van kracht zodra ze worden gezien en blijven van kracht tot het einde van het bestand dat ze bevat; de blokstructuur van het programma is niet van belang.
  • Een Preprocessor voert hoofdzakelijk drie taken uit op de HLL code :

  1. Verwijderen van commentaar : Het verwijdert al het commentaar. Een commentaar is alleen geschreven voor mensen om de code te begrijpen. Dus, het is duidelijk dat ze van geen nut zijn voor een machine. Dus, de preprocessor verwijdert ze allemaal omdat ze niet nodig zijn in de uitvoering en ook niet zullen worden uitgevoerd.

    Dit is hoe je een bestand kunt zien met verwijderd commentaar in linux) :
    Schrijf een C code (laat de bestandsnaam prog.c zijn). Bewerk het voor met het commando gcc -E prog.c


    U ziet de uitvoer met de code zonder commentaar.

    Dit bestand wordt opgeslagen met een ‘.i’ extensie (prog.i) die als invoer zal dienen voor de compiler.

  2. File inclusion : Het opnemen van alle bestanden uit de bibliotheek die ons programma nodig heeft. In HLL schrijven we #include, wat een directief is voor de preprocessor om de inhoud van het gespecificeerde bibliotheek bestand op te nemen. Bijvoorbeeld, #include vertelt de preprocessor om alle inhoud van het bibliotheek bestand stdio.h.
    Dit kan ook geschreven worden met dubbele aanhalingstekens – #include “stdio.h”
    Note: Als de bestandsnaam tussen haakjes staat, wordt het bestand opgezocht in de standaard compiler include paden. Als de bestandsnaam tussen dubbele aanhalingstekens staat, wordt het zoekpad uitgebreid met de huidige bron-directory.
  3. Macro uitbreiding : Macro’s kunnen worden aangeroepen als kleine functies die niet zo overhead zijn om te verwerken. Als we een functie moeten schrijven (met een kleine definitie) die recursief moet worden aangeroepen (steeds weer), dan zouden we een macro moeten verkiezen boven een functie.
    Dus, het definiëren van deze macro’s wordt gedaan door de preprocessor.
    #define SI 1000

    is een eenvoudig voorbeeld van een macro.

    • Er zijn twee soorten macro’s: Object-achtige (nemen geen parameters) en functie-achtige (kunnen parameters nemen)
      // object-like macro#define // function-like macro #define () 
    • U kunt een macrodefinitie verwijderen met #undef:
      // delete the macro# undef 
    • We kunnen een macro van meerdere regels schrijven, hetzelfde als een functie, maar elk statement eindigt met “\”.

      #include <stdio.h>
      #define MACRO(num, str) {\
      printf("%d", num);\
      printf(" is");\
      printf(" %s number", str);\
      printf("\n");\
      }

      
      

      
      

Dit artikel is geschreven door Diksha. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.