Introducere în directivele preprocesorului în C

Cel mai adesea este făcut ca o concepție greșită că preprocesoarele sau macro-urile fac parte din compilarea programului, dar este complet greșit. Directivele preprocesoare sunt tipul de macro și o fază înainte de a avea loc compilarea. Se poate spune că acestea sunt câteva seturi de instrucțiuni date compilatorului pentru a efectua compilarea efectivă. Ele sunt, de asemenea, cunoscute sub numele de abrevieri mai lungi pentru macros, ceea ce înseamnă că valoarea în macros este înlocuită cu segmentul de coduri. Macro este definit de un simbol special și are un simbol care începe cu „#” Prin urmare, aceste # define este un fel de preprocesor special urmat de compilatorul propriu-zis. În acest subiect, vom afla despre directivele preprocesoare din C.

Preprocesorul are un tip de reprezentare special pentru identificarea sa, precum orice directivă preprocesor se inițiază printr-un simbol special al „#” urmat de un identificator și apoi numele directivei. Spațiul alb este permis și înainte și după #. De exemplu, # include.

Există anumite facilități sau facilități pe care un preprocesor C le poate oferi:

  • Fișiere antet: Includerea fișierelor antet este un mod prin care declarațiile pot fi înlocuite cu sintaxa programului și corpul programului.
  • Extinderea Macro: Definirea macro-urilor este ca și prescurtarea unei bucăți de cod pe care un preprocesor C înlocuiește macro-urile cu definiția respectivă.
  • Compilarea după condiții: În funcție de diferite scenarii sau diferite condiții, includerea anumitor părți ale programului este posibilă prin compilare condiționată.
  • Line Control: Dacă utilizați un program pentru a combina sau rearanja pe cineva sau mai multe fișiere sursă într-un fișier intermediar pentru compilare, puteți utiliza controlul de linie pentru a informa compilatorul de unde provine fiecare linie sursă.

Tipuri de directive ale preprocesorului

Toate tipurile de directive ale preprocesorului sunt următoarele:

  1. # defini
  2. # include
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # dacă
  7. #else
  8. #elif
  9. # endif
  10. #eroare
  11. #pragma

1. #define (Macros)

Un macro este un fragment de cod care este înlocuit cu o anumită valoare a codului macro. Orice macro este descris și definit în cea mai mare parte prin directiva sa #define.

Sintaxă:

#define token value

Există două tipuri de macro-uri:

  • Funcție - ca macros
  • Macro - obiect - ca obiect
Funcție - ca macros

Funcția like-macro funcționează aproape ca un apel funcțional.

De exemplu:

#define MAX(a, b) ((a)>(b) ? (a): (b))

MAX aici este numele Macro.

Exemplu:

ieşire:

Macro - obiect - ca obiect

Macro-uri de tip obiect sunt tipul identificatorului înlocuit cu valoarea. Este folosit mai ales pentru a reprezenta constante numerice.

#define PI 3.1415

Aici valoarea PI va fi înlocuită de macro.


ieşire:

2. #includeți

Există o altă funcționalitate pentru directiva include preprocesor. Are propriile sale trei variante care înlocuiesc codul cu codul actual de fișiere sursă.

Trei variante sunt următoarele:

  • #include
  • #include“fișier“
  • Includeți orice altceva

#include

Căutări pentru un fișier din lista definită a sistemului sau directoare, după cum este specificat, apoi caută o listă standard de biblioteci de sistem.

#include“fișier“

Acest tip este utilizat pentru propriile fișiere de antet personalizate ale programului. Se face o căutare pentru un fișier numit fișier mai întâi în directorul curent, urmat de fișierele antetului sistemului și directoarele curente ale fișierului curent.

#include orice

Acest tip de directivă include preprocesor este utilizat atunci când niciunul dintre celelalte două tipuri de directive rămase și argumentele sale nu se potrivesc și nu satisfac structura de calcul.

3. #Ifdef

Verifică dacă macro-ul este definit prin # define sau nu. Dacă da, va executa codul, altfel nu va fi.

Sintaxă:

#ifdef MACRO
(
Code body
)
#endif
#undef:

A anula definiția unei macro înseamnă că este nedeterminată și este precedată de directiva #undef.

Sintaxă:

#undef token

ieşire:

4. Ifndef

Acest procesor verifică dacă #define este definit sau nu de #define. Dacă da, execută codul.

Sintaxă:

#Ifndef MACRO
//code
#endif
#If

Acest procesor funcționează ca doar o buclă if, evaluează expresia sau starea. Dacă condiția ID adevărată Va executa codul altfel, nu.

Sintaxă:

#if expression
//code
#endif
#else

Directiva #else preprocessor este utilizată pentru a evalua expresia sau condiția dacă starea #if este falsă. Poate fi utilizat cu directivele #if, #elif, #ifdef și #ifndef.

Sintaxă:

#if expression
//if body
#else
//else body
#endif

Exemplu:

ieşire:

5. #Error

Așa cum sugerează numele său, Directiva de preprocesare a erorilor este utilizată pentru a indica o eroare și apoi compilatorul dă o eroare fatală dacă se găsește directiva de eroare și se omite următorii pași de compilare.

ieşire:

6. #pragma

Depinde de compilator, deoarece diferite sisteme de operare și diferite mașini furnizează toate tipurile de caracteristici ale sistemului de operare care este utilizat de compilator pentru a oferi informații suplimentare compilatorului.

Sintaxă:

#pragma token

Exemplu:

ieşire:

Fiecare preprocesor are propria sa semnificație, cum ar fi o directivă condițională folosită pentru a verifica dacă o parte a programului trebuie luată în considerare pe baza unor scenarii sau nu.

Să presupunem că un program dorește să fie compilat într-un mediu specific cu configurarea specifică a sistemului de operare, dar de îndată ce trece la acea fază de compilare aruncă o eroare sau poate da un cod invalid doar oferind programului său posibilitatea unui mare nu pentru a conecta programul și a-l rula în timpul executării. Poate fi o altă posibilitate, de asemenea, atunci când același fișier sursă cu două programe diferite poate face o verificare a consistenței consumatoare de timp sau datele sale imediate sau poate imprima valorile datelor cu depanare.

De asemenea, aceste scenarii care urmează să fie create cu calcul pot fi, de asemenea, folosite pentru a rula pe o singură mașină utilizând directive de preprocesare.

Concluzie

Ieșirea de la preprocesorul C seamănă foarte mult cu intrarea, cu excepția faptului că toate directivele de preprocesare au fost înlocuite cu linii goale sau spații albe. Diferite fișiere și formate au diferite sintaxe care spun că începutul unui nou fișier a fost făcut sau care indică întoarcerea la un fișier sau procesare ar trebui să se facă înainte de compilare.

Toate scenariile sunt folosite pentru a-i informa pe alții despre puterea preprocesorului C și despre cum evoluează cu diferite versiuni ale compilatorului pornit cu standardele GCC și ANSI.

Articole recomandate

Acesta este un ghid pentru directivele preprocesoare din C. Aici discutăm tipurile de directive ale preprocesorului cu sintaxă și exemple. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe-

  1. Numărul invers în C
  2. Sortare în C
  3. Funcția de spălare în C
  4. Continuați declarația în C
  5. Sortare în C #
  6. Cum funcționează hashing în php?