Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Macrouri predefinite

Informatica


Macrouri predefinite

----- ----- -----------------

In ANSI C sunt 5 macrouri predefinite. Nu pot fi redefinite de catre programator. Ele au la inceput si sfarsit cate doua simboluri

"underscore".

Macro predefinit Valoare



-------- ----- ------ ----- ----- --------- ----- -------

__DATE__ Un sir ce contine data curenta

__FILE__ Un sir ce contine numele fisierului

__LINE__ Un intreg reprezentand numarul liniei curente

__STDC__ Daca implementarea=ANSI C, atunci acesta

reprezinta un numar diferit de zero

__TIME__ Un sir ce contine timpul curent

-------- ----- ------ ----- ----- --------- ----- -------

----- ----- ------------

Operatorii # si ##

----- ----- ------------

Operatorii de preprocesare # si ## sunt valabili in ANSI C, dar nu si in C traditional. Operatorul unar # cauzeaza transformarea in sir a unui parametru formal dintr-o macro-definitie.

#define mesaj_pentru(a, b) \

printf(#a " si " #b ": Te iubim !\n")

void main()

La apelul acestui macrou, fiecare parametru al acestuia este inlocuit cu argumentul corespunzator, iar # cauzeaza ca argumentele sa fie puse intre ghilimele. Altfel spus, dupa preprocesare, in memorie se obtine:

void main()

Deoarece sirurile constante separate prin spatiu se concateneaza, instructiunea de mai sus este echivalenta cu:

void main()

Operatorul binar ## este folosit la impartirea in tokenuri lexicale.

------------

Exemplu:

------------ #define X(i) x ## i

X(1) = X(2) = X(3);

va deveni dupa preprocesare

x1 = x2 = x3;

----- ----- ---------------

Macroul "assert()"

----- ----- --------------

ANSI C pune la dispozitie macroul "assert()" din biblioteca standard "assert.h". Acest macrou poate fi folosit cand vrem sa ne asiguram ca o expresie are o anumita valoare. Vrem sa scriem o functie ale carei argumente satisfaca niste conditii.

-----------

Exemplu:

-----------

#include <assert.h>

void f(char *p, int n)

Daca vreo asertiune esueaza, atunci sistemul va tipari un mesaj si va opri executia programului. Iata o implementare posibila a lui

"assert()".

#if defined(NDEBUG)

#define assert(ignore) ((void) 0) /* ignorare */

#else

#define assert(expr)

if (!(expr)) \

#endif

De remarcat ca daca NDEBUG este definit, atunci sunt ignorate toate asertiunile. Aceasta permite programatorului in timpul scrierii programului sa verifice pas cu pas executia programului. Functia "abort()" se gaseste in biblioteca standard.


Document Info


Accesari: 2646
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )