GeeksforGeeks

Compilarea unui program C – În spatele scenei

Un preprocesor este un software de sistem (un program de calculator care este proiectat să ruleze pe hardware-ul calculatorului și pe programele de aplicație). Acesta realizează preprocesarea limbajului de nivel înalt(HLL). Preprocesarea este prima etapă a sistemului de prelucrare a limbajului. Sistemul de procesare a limbajului traduce limbajul de nivel înalt în limbaj de nivel mașină sau în cod mașină absolut(adică în forma care poate fi înțeleasă de mașină).

  • Preprocesorul nu cunoaște regulile de domeniu de aplicare ale C. Directivele preprocesorului, cum ar fi #define, intră în vigoare imediat ce sunt văzute și rămân în vigoare până la sfârșitul fișierului care le conține; structura blocurilor programului este irelevantă.
  • Un preprocesor îndeplinește în principal trei sarcini asupra codului HLL :

  1. Îndepărtarea comentariilor : Îndepărtează toate comentariile. Un comentariu este scris doar pentru ca oamenii să înțeleagă codul. Prin urmare, este evident că acestea nu sunt de niciun folos pentru o mașină. Deci, preprocesorul le elimină pe toate, deoarece nu sunt necesare în execuție și nu vor fi executate la fel de bine.

    Acesta este modul de a vedea un fișier cu comentarii eliminate în linux) :
    Scrieți un cod C (numele fișierului să fie prog.c). Prelucrați-l folosind comanda gcc -E prog.c


    Vă veți vedea ieșirea cu codul care nu are comentarii.

    Acest fișier este salvat cu extensia ‘.i’ (prog.i) care va fi introdus în compilator.

  2. Includerea fișierelor : Includerea tuturor fișierelor din bibliotecă de care programul nostru are nevoie. În HLL scriem #include care este o directivă pentru preprocesor care îi spune acestuia să includă conținutul fișierului de bibliotecă specificat. De exemplu, #include îi va spune preprocesorului să includă tot conținutul din fișierul de bibliotecă stdio.h.
    Acest lucru poate fi scris, de asemenea, folosind ghilimele duble – #include „stdio.h”
    Nota: Dacă numele fișierului este cuprins între paranteze unghiulare, fișierul este căutat în căile de includere standard ale compilatorului. Dacă numele fișierului este cuprins între ghilimele duble, calea de căutare este extinsă pentru a include directorul sursă curent.
  3. Extinderea macrourilor : Macrourile pot fi apelate ca funcții mici care nu sunt atât de suprasolicitante pentru procesare. Dacă trebuie să scriem o funcție (având o definiție mică) care trebuie să fie apelată în mod recursiv (din nou și din nou), atunci ar trebui să preferăm o macro în locul unei funcții.
    Deci, definirea acestor macro-uri se face prin preprocesor.
    #define SI 1000

    este un exemplu simplu de macro.

    • Există două tipuri de macro-uri: De tip obiect (nu acceptă parametri) și de tip funcție (pot accepta parametri)
      // object-like macro#define // function-like macro #define () 
    • Puteți șterge o definiție de macro cu #undef:
      // delete the macro# undef 
    • Putem scrie macro pe mai multe linii la fel ca o funcție, dar fiecare instrucțiune se termină cu „\”.

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

      
      

      
      

Acest articol este realizat de Diksha. Dacă vă place GeeksforGeeks și doriți să contribuiți, puteți, de asemenea, să scrieți un articol folosind contribute.geeksforgeeks.org sau să trimiteți articolul prin poștă la [email protected]. Vedeți articolul dumneavoastră apărând pe pagina principală GeeksforGeeks și ajutați alți Geeks.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.