Preprocesoarele sunt o modalitate de procesare a textului cu programul dvs. C înainte ca acestea să fie efectiv compilate. Înainte de compilarea propriu-zisă a fiecărui program C, acesta este trecut printr-un preprocesor. Preprocesorul examinează programul încercând să afle instrucțiuni specifice numite directive Preprocesor pe care le poate înțelege. Toate directivele Preprocesor încep cu simbolul # (hash). Compilatoarele C++ folosesc același preprocesor C. [1]
Preprocesorul este o parte a compilatorului care efectuează operații preliminare (compilarea condiționată a codului, inclusiv fișierele etc…) la codul dvs. înainte să îl vadă compilatorul. Aceste transformări sunt lexicale, ceea ce înseamnă că rezultatul preprocesorului este încă text.
NOTĂ: Din punct de vedere tehnic, ieșirea fazei de preprocesare pentru C constă dintr-o secvență de tokene, mai degrabă decât textul sursă, dar este simplu să scoateți textul sursă care este echivalent cu secvența de tokene dată și care este în mod obișnuit acceptat de compilatori printr-o opțiune -E sau /E – deși opțiunile din linia de comandă pentru compilatoarele C nu sunt complet standard, multe urmează reguli similare. |
Directive
Directivele sunt instrucțiuni speciale adresate preprocesorului (directiva preprocesorului) sau compilatorului (directiva compilatorului) despre cum ar trebui să proceseze o parte sau tot codul sursă sau să stabilească niște steaguri pe obiectul final, și sunt folosite pentru a ușura scrierea codului sursă (mai portabil, de exemplu) și pentru a face codul sursă mai ușor de înțeles. Directivele sunt gestionate de preprocesor, care este fie un program separat invocat de compilator, fie o parte a compilatorului însuși.
#include
C are unele caracteristici ca parte a limbajului și altele ca parte a unei biblioteci standard, care este un depozit de cod care este disponibil alături de fiecare compilator C conform standardului. Când compilatorul C compilează programul dvs., de obicei îl leagă și cu biblioteca standard C. De exemplu, la întâlnirea unei directive #include <stdio.h>
, aceasta înlocuiește directiva cu conținutul fișierului antet stdio.h.
Când utilizați caracteristici din bibliotecă, C vă solicită să declarați ce ați folosi. Prima linie din program este o directivă de preprocesare care ar trebui să arate astfel:
#include <stdio.h>
Linia de mai sus face ca declarațiile C care sunt în antetul stdio.h să fie incluse pentru a fi utilizate în programul dumneavoastră. De obicei, acest lucru este implementat doar inserând în programul dumneavoastră conținutul unui fișier antet numit stdio.h, situat într-o locație dependentă de sistem. Locația acestor fișiere poate fi descrisă în documentația compilatorului. O listă de fișiere de antet C standard este listată mai jos în tabelul Antete.
Antetul stdio.h conține diverse declarații pentru intrare/ieșire (I/O) folosind o abstractizare a mecanismelor I/O numite fluxuri. De exemplu, există un obiect flux de ieșire numit stdout, care este folosit pentru a scoate text la ieșirea standard, care de obicei afișează textul pe ecranul computerului.
Dacă se utilizează paranteze unghiulare ca în exemplul de mai sus, preprocesorul este instruit să caute fișierul de includere pe calea mediului de dezvoltare pentru includerile standard.
#include "other.h"
Dacă utilizați ghilimele („ „), preprocesorul este de așteptat să caute în unele locații suplimentare, de obicei definite de utilizator, pentru fișierul antet, și să revină la căile de includere standard numai dacă nu este găsit în acele locații suplimentare. Este obișnuit ca acest formular să includă căutarea în același director ca și fișierul care conține directiva #include.
NOTĂ: Ar trebui să verificați documentația mediului de dezvoltare pe care îl utilizați pentru orice implementare specifică furnizorului a directivei #include. |
(Include texte traduse și adaptate din Wikibooks de Nicolae Sfetcu)
Lasă un răspuns