Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Cele mai importante directive preprocesor sunt :<br />
// inlocuieste toate aparitiile identificatorului “ident” prin sirul “text”<br />
#define ident text<br />
// defineste o macroinstructiune cu argumente<br />
#define ident (a1,a2,...) text<br />
// include in compilare continutul fisierului sursa “fisier”<br />
#include “fisier”<br />
// compilare conditionata de valoarea expresiei “expr”<br />
#if expr<br />
// compilare conditionata de definirea unui identificator (cu #define)<br />
#if defined ident<br />
// terminarea unui bloc introdus prin directiva #if<br />
#endif<br />
Directiva define are multiple utilizãri <strong>în</strong> programele C :<br />
a) - Definirea de constante simbolice de diferite tipuri (numerice, text)<br />
b) - Definirea de macrouri cu aspect de functie, pentru compilarea mai eficientã a unor<br />
functii mici, apelate <strong>în</strong> mod repetat. Exemple:<br />
# define max(A,B) ( (A)>(B) ? (A):(B) )<br />
#define random(num)(int) (((long)rand()*(num))/(RAND_MAX+1))<br />
#define randomize() srand((unsigned)time(NULL))<br />
Macrourile pot contine si declaratii, se pot extinde pe mai multe linii si pot fi utile<br />
<strong>în</strong> reducerea lungimii programelor sursã si a efortului de programare.<br />
In standardul din 1999 al <strong>limbajul</strong>ui C s-a preluat din C++ cuvântul cheie inline<br />
pentru declararea functiilor care vor fi compilate ca macroinstructiuni <strong>în</strong> loc de a folosi<br />
macrouri definite cu define.<br />
c)- Definirea unor identificatori specifici fiecãrui fisier si care vor fi testati cu<br />
directiva ifdef. De exemplu, pentru a evita declaratiile extern <strong>în</strong> toate fisierele sursã,<br />
mai putin fisierul ce contine definitiile variabilelor externe, putem proceda astfel:<br />
- Se defineste <strong>în</strong> fisierul sursã cu definitiile variabilelor externe un nume simbolic<br />
oarecare:<br />
// fisierul DIRLIST.C<br />
#define MAIN<br />
- In fisierul “dirlist.h” se plaseazã toate declaratiile de variabile externe, dar <strong>în</strong>cadrate<br />
de directivele if si endif:<br />
// fisierul DIRLIST.H<br />
#if !defined(MAIN) // sau ifndef MAIN<br />
extern char path[MAXC], mask[MAXC], opt[MAXC];<br />
#endif