17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!