Enum-urile in C
Definiție: Enum-urile sunt un set de constante încapsulate sub forma unui tip de date care se pot definii de către utilizator cu valori predefinite sau cu valori implicite. Enum-uri cu valori predefinit au valorile setate explicit de către programator. Se poate vedea în exemplele de mai jos cum se declara și cum se poate folosi.
typedef enum
{
ZERO = 0,
UNU = 1
} MyEnumType;
typedef enum
{
FALSE = 0xFFU,
TRUE = 0x00
} BooleanType;
int main()
{
BooleanType retValue;
retValue = TRUE;
printf("%d",retValue);
retValue = FALSE;
printf("%d",retValue);
return 0;
}
Valori implicite
Enum-uri cu valori implicite au valorile stabilite de către compilator în ordine crescătoare începând de la zero.
typedef enum
{
FALSE,
TRUE
} BooleanType;
typedef enum
{
ZERO,
UNU,
DOI,
TREI,
PATRU,
CINCI,
SASE,
SAPTE,
OPT,
NOUA,
A,
B,
C,
D,
E,
F
} Baza16Type;
Utilizare
Aceste structuri de date sunt foarte utile pentru că datele sunt organizate, practic fiecare număr poate însemna ceva. Există totuși o problemă majoră când vine vorba de compilatoare diferite și alocarea memoriei pentru aceste variabile. Aceeaşi variabilă poate avea dimensiuni diferite pentru compilatoare diferite. În schimb pentru programarea sub windows enum-urile sunt foarte des folosite. Personal mi se par foarte ușor de folosit și ușor de înțeles.
Nu e mare filozofie, sunt niște constante organizate într-un anumit fel care practic nu te lasă să greşeşti asignarea variabilei de acest tip. Dacă se foloseşte la asignare orice alta valoare din afara intervalului compilatorul va returna o eroare. Dacă se foloseşte la asignare o valoare numerica care este totuși egala cu un termen din enumerare atunci şi în acest caz va returna o eroare.
Referinte:
C Enumeration Declarations
C_and_syntactically_similar_languages