Preprocesare
Această intrare sau secțiune despre limbaje de programare nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
În informatică și în special în terminologia limbajelor de programare , preprocesarea (sau precompilarea ) este o fază a elaborării codului sursă care precede compilarea . Programul care efectuează această procesare se numește precompilator sau preprocesator .
Transformările pe care preprocesorul le poate efectua asupra codului sunt de obicei relativ simple; un exemplu tipic este înlocuirea sistematică a anumitor secvențe de caractere din fișierul sursă cu text mai complex ( macro ) sau cu conținutul unui alt fișier sursă . Rezultatul precompilării este încă codul sursă, adică precompilarea nu include niciunul dintre pașii necesari pentru a genera codul mașinii , care rămâne apanajul compilatorului real.
Cel mai cunoscut sistem de precompilare este cel asociat cu limbajul C și o mare parte din terminologia utilizată cu referire la preprocesare în general este împrumutată de la cea a lui C.
În general, preprocesorul este capabil să interpreteze unele porțiuni de cod sursă care utilizează o sintaxă dedicată explicit preprocesării; în terminologia C aceste porțiuni de cod se numesc directive preprocesor (sau directive de precompilare ).
Exemple de directive de precompilare C
În C, directivele precompilatorului sunt marcate cu simbolul #
principal.
Macro
În C, cuvântul cheie #define
definește o macro , o directivă care necesită înlocuirea unei secvențe de caractere cu alta. De exemplu, următorul fragment de cod solicită înlocuirea cuvântului MAXBYTES
cu 80
peste tot în codul sursă.
#define MAXBYTES 80
int main ( int argc , char * argv [])
{
int i ;
buffer char [MAXBYTES];
pentru ( i = 0 ; i < MAXBYTES ; i ++ )
tampon [ i ] = 0 ;
...
}
După precompilare, codul devine:
int main ( int argc , char * argv [])
{
int i ;
tampon char [ 80 ];
pentru ( i = 0 ; i < 80 ; i ++ )
tampon [ i ] = 0 ;
...
}
Include
Directiva #include
instruiește preprocesorul să includă alt cod sursă dintr-un alt fișier în această sursă.
Extindere condiționată
#ifdef
și #endif
directivele vă permit să includă sau să excludă o anumită secțiune de cod din codul în funcție de faptul dacă un anumit macro este definită sau nu:
#define DEBUG
...
#ifdef DEBUG
printf (...);
#endif
...
În exemplul nostru, preprocesorul va părăsi linia printf (...) dacă și numai dacă macro-ul DEBUG a fost definit. Această directivă este utilă atunci când introduceți linii pentru depanarea aplicației, cum ar fi imprimarea liniilor cu valori variabile, în cod; dacă în unele cazuri nu este nevoie să imprimăm aceste linii (în absența directivelor) am fi obligați să comentăm liniile de depanare și, eventual, să le comentăm dacă este necesar. Un alt aspect util este adaptarea la platformă. Este posibil ca același cod să ruleze pe un sistem Unix sau pe un sistem Windows, cu apeluri către diferite biblioteci. Definirea acestor linii directoare ar putea ajuta la această sarcină.
Limbi derivate din C.
Limbile C ++ , C # și alte limbi derivate din C moștenesc multe (sau toate) directive din C și de obicei adaugă mai multe; de exemplu, între directivele C # care nu derivă din C puteți fi citate #warning
, #error
, #line
, #region
și #endregion
Elemente conexe
linkuri externe
- ( EN ) Preprocesare , în Encyclopedia Britannica , Encyclopædia Britannica, Inc.