C programozás

Az enum használata a C nyelvben

Az enum használata a C nyelvben
A C programozási nyelvű enum programot az integrál konstans értékek meghatározására használják, ami nagyon hasznos a tiszta és olvasható programok írásakor. A programozók általában a felsorolással definiálják a megnevezett integrál konstansokat a programjaikban a szoftver jobb olvashatóságának és fenntarthatóságának biztosítása érdekében. Ez a cikk részletesen tárgyalja az enumot.

Szintaxis

enum
Felsorolás_Konstant_Element-1,
Felsorolás_Általános_Element-2,
Felsorolás_Konstant_Element-3,
… ,
Felsorolás_állandó_Element-n,
;

Az Enumeration_Constant_Element-1 alapértelmezett értéke 0, az Enumeration_Constant_Element-2 értéke 1, az Enumeration_Constant_Element-3 értéke 2, az Enumeration_Constant_Element-n értéke (n-1).

Mély merülés az Enumba

Most, hogy ismerjük a felsorolás típusának meghatározásához szükséges szintaxist, nézzünk meg egy példát:

enum Error
IO_ERROR,
DISK_ERROR,
HÁLÓZATI HIBA
;

A felsorolás típusának meghatározásához mindig az „enum” kulcsszót kell használni. Tehát, amikor felsorolási típust akar megadni, akkor az „enum” kulcsszót kell használnia . Az „enum” kulcsszó után érvényes azonosítót kell használnia a kulcs meghatározásához .

A fenti példában a fordító az IO_ERROR értéket hozzárendeli az integrálértékhez: 0, a DISK_ERROR az integrálértékhez: 1 és a NETWORK_ERROR az integrálértékhez: 2.  Alapértelmezés szerint az első enum elemhez mindig 0 értéket rendelnek, a következő enum elemhez 1 értéket rendelnek, és így tovább.

Ez az alapértelmezett viselkedés szükség esetén megváltoztatható az állandó integrálérték kifejezett hozzárendelésével, az alábbiak szerint:

enum Error
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8 ,
PRINT_ERROR
;

Ebben az esetben az IO_ERROR-ot a programozó kifejezetten 2-es értékhez rendeli, a DISK_ERROR-t a fordító 3-as értékhez rendeli, a NETWORK_ERROR-ot a programozó kifejezetten a 8-as értékhez, a PRINT_ERROR pedig a következő az előző enum elem integrált értéke NETWORK_ERROR (i.e., 9) a fordító.

Tehát most már megértette, hogyan definiálható a felhasználó által definiált felsorolási típus C-ben. Lehetséges-e deklarálni egy enum típusú változót (mivel deklarálhatunk egy egész típusú változót)?  Igen, ez az! Az enum változót a következőképpen deklarálhatja:

enum Error Hw_Error;

Ismét „enum” a kulcsszó itt, a „Error” az enum típus, a „Hw_Error” pedig egy enum változó.

Most a következő példákat vesszük szemügyre, hogy megértsük az enum különféle felhasználásait:

  • 1. példa: Alapértelmezett enum definícióhasználat
  • 2. példa: Egyéni enum definícióhasználat
  • 3. példa: Enum definíció állandó kifejezés használatával
  • 4. példa: enum hatókör

1. példa: Alapértelmezett összesítés Definíció Használat

Ebben a példában megtudhatja, hogyan definiálhatja a felsorolás típusát az alapértelmezett állandó értékekkel. A fordító gondoskodik az alapértelmezett értékek hozzárendeléséről az enum elemekhez. Az alábbiakban láthatja a példa programot és a hozzá tartozó kimenetet.

#include
/ * Adja meg az enum típusát * /
enum Error
IO_ERROR,
DISK_ERROR,
HÁLÓZATI HIBA
;
int main ()

enum Error Hw_Error; / * Enum változó létrehozása * /
printf ("A Hw_Error beállítása IO_ERROR értékre \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása DISK_ERROR értékre \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása NETWORK_ERROR értékre \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
visszatér 0;

2. példa: Egyéni enum Definition Használat

Ebben a példában megtudhatja, hogyan definiálhatja a felsorolás típusát egy egyedi állandó értékkel. Ez a példa segít megérteni, hogyan lehet az egyéni állandókat inicializálni bármilyen véletlenszerű sorrendben. Ebben a példában kifejezetten meghatároztuk az 1 állandó értékétutca és 3rd enum elemek (i.e., IO_ERROR és NETWORK_ERROR), de kihagytuk a 2nd és 4th elemek. Most a fordító feladata, hogy az alapértelmezett értékeket hozzárendelje a 2-heznd és 4th enum elemek (i.e., DISK_ERROR és PRINT_ERROR). A DISK_ERROR értéke 3, a PRINT_ERROR értéke pedig 9 lesz. Az alábbiakban láthatja a példa programot és a kimenetet.

#include
/ * Adja meg a felsorolás típusát - Egyéni inicializálás * /
enum Error
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8,
PRINT_ERROR
;
int main ()

/ * Enum változó deklarálása * /
enum Error Hw_Error;
printf ("A Hw_Error beállítása IO_ERROR értékre \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása DISK_ERROR értékre \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása NETWORK_ERROR értékre \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása PRINT_ERROR értékre \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
visszatér 0;

3. példa: Enum definíció állandó kifejezés használatával

Ebben a példában megtudhatja, hogyan használhatja a konstans kifejezést az enum elemek állandó értékének meghatározásához.

#include
/ * Adja meg az enum típusát - egyéni inicializálás állandó kifejezés használatával
állandó kifejezést használunk itt:
a. IO_ERROR és
b. HÁLÓZATI HIBA
Ez szokatlan módon határozza meg az enum elemeket; ez azonban
program bemutatja, hogy az enum elemek inicializálásának ilyen módja lehetséges a c.
* /
enum Error
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
NETWORK_ERROR = 2 == 2,
PRINT_ERROR
;
int main ()

/ * Enum változó deklarálása * /
enum Error Hw_Error;
printf ("A Hw_Error beállítása IO_ERROR értékre \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása DISK_ERROR értékre \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása NETWORK_ERROR értékre \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása PRINT_ERROR értékre \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
visszatér 0;

4. példa: Enum hatókör

Ebben a példában megtudhatja, hogyan működik a hatókörszabály az enum számára. A konstans definiálására egy MACRO (#define) használható volna az enum helyett, de a hatókörszabály nem működik a MACRO esetében.

#include
int main ()

/ * Adja meg az enum típusát * /
enum Error_1
IO_ERROR = 10,
DISK_ERROR,
NETWORK_ERROR = 3,
PRINT_ERROR
;

/ * Határozza meg az enum típusát a belső hatókörben * /
enum Error_1
IO_ERROR = 20,
DISK_ERROR,
NETWORK_ERROR = 35,
PRINT_ERROR
;
/ * Enum változó deklarálása * /
enum Error_1 Hw_Error;
printf ("A Hw_Error beállítása IO_ERROR értékre \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása DISK_ERROR értékre \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása NETWORK_ERROR értékre \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);
printf ("\ nA Hw_Error beállítása PRINT_ERROR értékre \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error értéke =% d \ n", Hw_Error);

visszatér 0;

Összehasonlítás az enum és a makró között

Enum Makró
A hatókörre vonatkozó szabály alkalmazható az enum esetében. A hatókörszabály nem alkalmazható makróra.
Az alapértelmezett Enum érték hozzárendelés automatikusan megtörténik.

Az Enum nagyon segít meghatározni az állandók nagy számát. A fordító elvégzi az alapértelmezett állandó érték inicializálását.

A programozónak mindig kifejezetten meg kell említenie a makroállandó értékeket.

Ez fárasztó folyamat lehet sok konstans számára, mivel a programozónak mindig kézzel kell meghatároznia az egyes állandó értékeket, miközben meghatározza a makrót.

Következtetés

A C-ben szereplő enum program opcionális módszernek tekinthető önálló programok vagy kis méretű projektek számára, mivel a programozók mindig makrót használhatnak enum helyett. A tapasztalt programozók azonban nagyszabású szoftverfejlesztési projektekben általában az enum helyett a makrot használják. Ez segít a tiszta és olvasható programok írásában.

A legjobb parancssori játékok Linuxhoz
A parancssor nem csak a legnagyobb szövetséges a Linux használatakor, hanem a szórakozás forrása is lehet, mert sok olyan szórakoztató játék lejátszás...
A legjobb Gamepad Mapping alkalmazások Linuxhoz
Ha egy tipikus billentyűzet és egér beviteli rendszer helyett szeretnél játékokat játszani Linuxon egy játékvezérlővel, van néhány hasznos alkalmazás ...
Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...