Preprocesare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Î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

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT