Diferență între revizuiri ale paginii „PC Laborator 2.1 (opțional)”
Linia 20: | Linia 20: | ||
== Directiva <code style="color: green">#include</code> == | == Directiva <code style="color: green">#include</code> == | ||
+ | |||
+ | Probabil #include este cea mai frecvent utilizată directivă de preprocesare, dar și cea mai ușor de înțeles. Efectiv, preprocesorul caută fișierul specificat între paranteze unghiulare sau ghilimele în lista de directoare dintr-o listă cunoscută și apoi înlocuiește directiva #include cu conținutul fișierului respectiv. | ||
+ | |||
+ | === Exemplu === | ||
+ | |||
+ | * Scrieți un fișier nou într-un editor de text care să conțină următorul cod: | ||
+ | <syntaxhighlight lang="C"> | ||
+ | int main(){ | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | * Salvați fișierul cu numele <code style="color: blue">test_preprocesor.c</code>. | ||
+ | * Scrieți un fișier <code style="color: blue">Makefile</code> cu o singură regulă care să producă un fișier numit <code style="color: blue">processed.c</code> din fișierul de mai sus, apelând compilatorul C (gcc) cu fanionul corespunzător pentru a face doar preprocesare (vezi [[PC Laborator 1#Generarea fișierului executabil|PC Laborator 1]]). |
Versiunea de la data 21 septembrie 2015 18:42
Obiective
În urma parcurgerii acestui laborator studentul va fi capabil:
- să înțeleagă funcționalitatea preprocesorului și să folosească directive de preprocesare;
- să utilizeze stream-urile standard ale unui proces în Linux și în programe C;
- să utilizeze funcționalitatea de bază a unui sistem de revision control - Git.
Preprocesorul C
Preprocesarea unui fișier cu cod C este prima etapă din lanțul de build, și reprezintă, așa cum îi spune și numele, o etapă de dinainte de procesarea (compilarea) efectivă. Motivul pentru care se realizează această etapă inițială este faptul că prin preprocesarea codului se pot elimina secțiuni din program care ori nu sunt necesare, ori nu sunt compilabile pe un anumit procesor sau sistem de operare. Spre exemplu, pentru a folosi o interfață serială, în sistemul de operare Windows, și compilatorul Visual Studio, există un tip de date care se numește HANDLE
. Acest tip de date nu există în Linux, aici fiind înlocuit simplu cu int
. În acest caz, compilarea unui program care folosește HANDLE
pe Linux va eșua cu eroare. Aici intervin directivele de preprocesare, după cum vom vedea în continuare.
În acest laborator se va discuta despre:
#include
#define
#undef
#ifdef
#ifndef
#else
#endif
Directiva #include
Probabil #include este cea mai frecvent utilizată directivă de preprocesare, dar și cea mai ușor de înțeles. Efectiv, preprocesorul caută fișierul specificat între paranteze unghiulare sau ghilimele în lista de directoare dintr-o listă cunoscută și apoi înlocuiește directiva #include cu conținutul fișierului respectiv.
Exemplu
- Scrieți un fișier nou într-un editor de text care să conțină următorul cod:
int main(){
return 0;
}
- Salvați fișierul cu numele
test_preprocesor.c
. - Scrieți un fișier
Makefile
cu o singură regulă care să producă un fișier numitprocessed.c
din fișierul de mai sus, apelând compilatorul C (gcc) cu fanionul corespunzător pentru a face doar preprocesare (vezi PC Laborator 1).