Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza
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: 2313
Apreciat:

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

Copiaza codul
in pagina web a site-ului tau.




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

Politica de confidentialitate




Copyright © Contact (SCRIGROUP Int. 2022 )