
Preprocesorul C este un preprocesor de macrocomenzi (vă permite să definiți macrocomenzi) care vă transformă programul înainte de a fi compilat. Aceste transformări pot fi includerea unui fișier antet, expansiuni de macro etc.
Toate directivele de preprocesare încep cu simbolul #. De exemplu,
#define PI 3.14
Câteva dintre utilizările comune ale preprocesorului C sunt:
- Includerea fișierelor de antet: #include
- Macro-uri folosind #define
- Exemplu 1: #define preprocessor
- Macros asemănătoare funcțiilor
- Exemplu 2: Utilizarea preprocesorului #define
- Compilare condiționată
- Utilizări ale condiționalelor
- Cum se utilizează condiționalele?
- #ifdef Directiva
- #if, #elif și #else Directiva
- #defined
- Macrograme predefinite
- Exemplu 3: Obținerea orei curente folosind __TIME__
- Lecturi recomandate
Includerea fișierelor de antet: #include
Preprocesorul #include este utilizat pentru a include fișiere antet în programele C. De exemplu,
#include <stdio.h>
Aici, stdio.h este un fișier antet. Directiva preprocesorului #include înlocuiește linia de mai sus cu conținutul fișierului de antet stdio.h.
De aceea trebuie să folosiți #include <stdio.h> înainte de a putea folosi funcții precum scanf() și printf().
Puteți, de asemenea, să vă creați propriul fișier antet care să conțină declarații de funcții și să îl includeți în programul dumneavoastră folosind această directivă de preprocesor.
#include "my_header.h"
Vizitați această pagină pentru a afla mai multe despre utilizarea fișierelor antet.
Macro-uri folosind #define
Un macro este un fragment de cod căruia i se dă un nume. Puteți defini un macro în C folosind directiva de preprocesor #define.
Iată un exemplu.
#define c 299792458 // speed of light
Aici, când folosim c în programul nostru, acesta este înlocuit cu 299792458.
Exemplu 1: #define preprocessor
#include <stdio.h>#define PI 3.1415int main(){ float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0;}
Macros asemănătoare funcțiilor
De asemenea, puteți defini macro-uri care lucrează într-un mod similar cu un apel de funcție. Acest lucru este cunoscut sub numele de macro-uri de tip funcție. De exemplu,
#define circleArea(r) (3.1415*(r)*(r))
#define circleArea(r) (3.1415*(r)*(r))
De fiecare dată când programul întâlnește circleArea(argument), acesta este înlocuit cu (3.1415*(argument)*(argument)).
Să presupunem că am trecut 5 ca argument, atunci, se extinde ca mai jos:
circleArea(5) expands to (3.1415*5*5)
Exemplu 2: Utilizarea preprocesorului #define
#include <stdio.h>#define PI 3.1415#define circleArea(r) (PI*r*r)int main() { float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0;}
Vizitați această pagină pentru a afla mai multe despre macro-uri și preprocesorul #define.
Compilare condiționată
În programarea C, puteți instrui preprocesorul dacă să includă sau nu un bloc de cod. Pentru a face acest lucru, se pot folosi directivele condiționale.
Este similar cu instrucțiunea if cu o diferență majoră.
Instrucțiunea if este testată în timpul execuției pentru a verifica dacă un bloc de cod trebuie să fie executat sau nu în timp ce, directivele condiționale sunt folosite pentru a include (sau sări) un bloc de cod în program înainte de execuție.
Utilizări ale condiționalelor
- utilizați coduri diferite în funcție de mașină, de sistemul de operare
- compilați același fișier sursă în două programe diferite
- excludeți un anumit cod din program, dar păstrați-l ca referință pentru scopuri viitoare
Cum se utilizează condiționalele?
Pentru a utiliza condiționalul, se folosesc directivele #ifdef, #if, #defined, #else și #elseif.
#ifdef Directiva
#ifdef MACRO // conditional codes#endif
Aici, codurile condiționale sunt incluse în program numai dacă este definită MACRO.
#if, #elif și #else Directiva
#if expression // conditional codes#endif
Aici, expresia este o expresie de tip întreg (pot fi numere întregi, caractere, expresii aritmetice, macro-uri și așa mai departe).
Codurile condiționale sunt incluse în program numai dacă expresia este evaluată la o valoare diferită de zero.
Directiva opțională #else poate fi utilizată cu directiva #if.
#if expression conditional codes if expression is non-zero#else conditional if expression is 0#endif
De asemenea, puteți adăuga condiționale imbricate în #if...#else folosind #elif
#if expression // conditional codes if expression is non-zero#elif expression1 // conditional codes if expression is non-zero#elif expression2 // conditional codes if expression is non-zero#else // conditional if all expressions are 0#endif
#defined
Operatorul special #defined este utilizat pentru a testa dacă un anumit macro este definit sau nu. Este adesea folosit împreună cu directiva #if.
#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048 // codes
Macrograme predefinite
Iată câteva macrograme predefinite în programarea C.
| Macro | Valoare |
|---|---|
__DATE__ |
Un șir de caractere care conține data curentă |
__FILE__ |
A șir de caractere care conține numele fișierului |
__LINE__ |
Un număr întreg care reprezintă numărul curent al liniei |
__STDC__ |
Dacă respectă standardul C ANSI, atunci valoarea este un număr întreg diferit de zero |
__TIME__ |
Un șir de caractere care conține data curentă. |
Exemplu 3: Obținerea orei curente folosind __TIME__
Programul următor emite ora curentă folosind macroul __TIME__.
#include <stdio.h>int main(){ printf("Current time: %s",__TIME__); }
Salire
Current time: 19:54:39
Lecturi recomandate
- Control de linie
- Pragme
- Salire preprocesor
- Alte directive
.