๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ‘จ๐Ÿพ‍๐Ÿ’ป C++

๊ธฐํƒ€ ๋ฐ์ดํ„ฐ ํƒ€์ž…

by eazuooz 2022. 8. 19.

typedef

์œ ํ˜• ๋ณ„์นญ์€ ์œ ํ˜•์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. C++์—์„œ๋Š” ๋‹ค๋ฅธ ์‹๋ณ„์ž๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ์œ ํšจํ•œ ํ˜•์‹์— ๋ณ„์นญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C++์—๋Š” ์ด๋Ÿฌํ•œ ์œ ํ˜• ๋ณ„์นญ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ๊ตฌ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ตฌ๋ฌธ์€ C ์–ธ์–ด์—์„œ ์ƒ์†๋˜๋ฉฐ ํ‚ค์›Œ๋“œ ๋ฅผ typedef์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

typedef existing_type new_type_name ;

existing_typenew_type_name

typedef char C;
typedef unsigned int WORD;
typedef char * pChar;
typedef char field [50];

์ด๊ฒƒ์€ ๊ฐ๊ฐ , , ๋ฐ as C, , ๋ฐ ์˜ ๋„ค ๊ฐ€์ง€ ์œ ํ˜• ๋ณ„์นญ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ๋ณ„์นญ์ด ์ •์˜๋˜๋ฉด ๋‹ค๋ฅธ ์œ ํšจํ•œ ์œ ํ˜•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋“  ์„ ์–ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.WORDpCharfieldcharunsigned intchar*char[50]

C mychar, anotherchar, *ptc1;
WORD myword;
pChar ptc2;
field name;

๋ณด๋‹ค ์ตœ๊ทผ์—๋Š” ์œ ํ˜• ๋ณ„์นญ์„ ์ •์˜ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๊ตฌ๋ฌธ์ด C++ ์–ธ์–ด์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

using new_type_name = existing_type ;

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์™€ ๋™์ผํ•œ ์œ ํ˜• ๋ณ„์นญ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

using C = char;
using WORD = unsigned int;
using pChar = char *;
using field = char [50];

๋กœ ์ •์˜๋œ typedef๋ณ„์นญ๊ณผ ๋กœ ์ •์˜๋œ ๋ณ„์นญ using์€ ๋ชจ๋‘ ์˜๋ฏธ์ ์œผ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ฐจ์ด์  ์€ ๊ทธ๋ ‡์ง€ ์•Š์€ typedefํ…œํ”Œ๋ฆฟ ์˜์—ญ์—์„œ ํŠน์ • ์ œํ•œ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ using์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ ฅ์ด ๋” ๊ธธ๊ณ  ๊ธฐ์กด ์ฝ”๋“œ์—์„œ ๋” ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ๋” ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค using. ์ƒˆ๋กœ์šด ๊ณ ์œ  ๋ฐ์ดํ„ฐ ์œ ํ˜• ์„ ์ƒ์„ฑ ํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์œ ํ˜•์˜ ๋™์˜์–ด๋งŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” type ์œผ๋กœ ์„ ์–ธ๋œ ์œ„ ์˜ ์œ ํ˜• ๋„ type ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค . ๋‘˜ ๋‹ค ์‹ค์ œ๋กœ ๋™์ผํ•œ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.typedef

typedefusingmywordWORDunsigned int

ํ˜•์‹ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธธ๊ฑฐ๋‚˜ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ํ˜•์‹ ์ด๋ฆ„์˜ ๊ธธ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํ˜•์‹์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๋„๊ตฌ๋กœ ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ intํŠน์ • ์ข…๋ฅ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ดํ›„ ๋ฒ„์ „์—์„œ ํ•ด๋‹น ์œ ํ˜• int์„ (๋˜๋Š” ๋‹ค๋ฅธ ์œ ํ˜•) ์‰ฝ๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . long์‚ฌ์šฉ.

Union

Union์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ๋ถ€๋ถ„์„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์–ธ ๋ฐ ์‚ฌ์šฉ์€ ๊ตฌ์กฐ์ฒด ์ค‘ ํ•˜๋‚˜์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์€ ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

union type_name {
  member_type1 member_name1;
  member_type2 member_name2;
  member_type3 member_name3;
  .
  .
} object_names;

type_name์ด๊ฒƒ์€ ๋ชจ๋“  ๋ฉค๋ฒ„ ์š”์†Œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋กœ ์‹๋ณ„๋˜๋Š” ์ƒˆ๋กœ์šด ๊ณต์šฉ์ฒด ์œ ํ˜•์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค . ์ด ์œ ํ˜•์˜ ํฌ๊ธฐ๋Š” ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

union mytypes_t {
  char c;
  int i;
  float f;
} mytypes;

mytypes์„ธ ๊ฐœ์˜ ๋ฉค๋ฒ„ ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด( )๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค .

mytypes.c
mytypes.i
mytypes.f

์ด๋Ÿฌํ•œ ๊ฐ ๊ตฌ์„ฑ์›์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค ๋ชจ๋‘๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ™์€ ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉค๋ฒ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ชจ๋“  ๋ฉค๋ฒ„์˜ ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์ด ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ณต์šฉ์ฒด์˜ ์šฉ๋„ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ’ ์ „์ฒด์— ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ๋” ์ž‘์€ ์š”์†Œ์˜ ๋ฐฐ์—ด์ด๋‚˜ ๊ตฌ์กฐ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

union mix_t {
  int l;
  struct {
    short hi;
    short lo;
    } s;
  char c[4];
} mix;

int์ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์Šคํ…œ์ด ํฌ๊ธฐ๊ฐ€ 4๋ฐ”์ดํŠธ์ด๊ณ  ์œ ํ˜• ์ด 2๋ฐ”์ดํŠธ์ธ ์œ ํ˜• ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด short์œ„์—์„œ ์ •์˜ํ•œ ๊ณต์šฉ์ฒด๋Š” 4๋ฐ”์ดํŠธ์˜ ๋™์ผํ•œ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉ mix.lํ•ฉ๋‹ˆ๋‹ค . ์ด ๋ฐ”์ดํŠธ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ: ๋งˆ์น˜ ๊ทธ๊ฒƒ์ด type ์˜ ๋‹จ์ผ ๊ฐ’์ธ ๊ฒƒ์ฒ˜๋Ÿผ, ๋˜๋Š” ๊ฐ๊ฐ type ์˜ ๋‘ ๊ฐ’์ธ ๊ฒƒ์ฒ˜๋Ÿผ, ๋˜๋Š” ๊ฐ๊ฐ ์š”์†Œ ์˜ ๋ฐฐ์—ด์ธ ๊ฒƒ์ฒ˜๋Ÿผ . ์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๊ณต์šฉ์ฒด์—์„œ ์œ ํ˜•, ๋ฐฐ์—ด ๋ฐ ๊ตฌ์กฐ๋ฅผ ํ˜ผํ•ฉํ•ฉ๋‹ˆ๋‹ค. little-endian ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์ด ๊ณต์šฉ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ณต์šฉ์ฒด ๊ตฌ์„ฑ์›์˜ ์ •ํ™•ํ•œ ์ •๋ ฌ๊ณผ ์ˆœ์„œ๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ ์ด์‹์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.mix.smix.cintshortchar

์ต๋ช…์˜ ์กฐํ•ฉ

๊ณต์šฉ์ฒด๊ฐ€ ํด๋ž˜์Šค(๋˜๋Š” ๊ตฌ์กฐ์ฒด)์˜ ๊ตฌ์„ฑ์›์ธ ๊ฒฝ์šฐ ์ด๋ฆ„ ์—†์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ต๋ช… ๊ณต์šฉ์ฒด ๊ฐ€ ๋˜๋ฉฐ ํ•ด๋‹น ๊ตฌ์„ฑ์›์€ ํ•ด๋‹น ๊ตฌ์„ฑ์› ์ด๋ฆ„์œผ๋กœ ๊ฐœ์ฒด์—์„œ ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋‘ ๊ตฌ์กฐ ์„ ์–ธ์˜ ์ฐจ์ด์ ์„ ํ™•์ธํ•˜์„ธ์š”.

 

structure with regular union

struct book1_t {
  char title[50];
  char author[50];
  union {
    float dollars;
    int yen;
  } price;
} book1;

structure with anonymous union

struct book2_t {
  char title[50];
  char author[50];
  union {
    float dollars;
    int yen;
  };
} book2;

๋‘ ์œ ํ˜•์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์—์„œ๋Š” ๋ฉค๋ฒ„ ๊ณต์šฉ์ฒด์— ์ด๋ฆ„( price)์ด ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ์œ ํ˜•์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉค๋ฒ„ dollars๋ฐ yen์ด ์œ ํ˜•์˜ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์˜ ๊ฐ์ฒด(์ผ๋ฐ˜ ๊ณต์šฉ์ฒด ํฌํ•จ)์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

book1.price.dollars
book1.price.yen

๋ฐ˜๋ฉด ๋‘ ๋ฒˆ์งธ ์œ ํ˜•์˜ ๊ฐ์ฒด(์ต๋ช… ๊ณต์šฉ์ฒด ํฌํ•จ)์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

book2.dollars
book2.yen

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ ๋ฉค๋ฒ„ ๊ณต์šฉ์ฒด(๋ฉค๋ฒ„ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹˜)์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉค๋ฒ„ dollars์™€ yen์‹ค์ œ๋กœ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๊ฐ’์„ ๋™์‹œ์— ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์—์„œ price์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋™์‹œ์— ๋‘˜ ๋‹ค์—๋Š” ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .dollarsyen

 

์—ด๊ฑฐํ˜•(enum)

์—ด๊ฑฐํ˜• ์€ ๊ฐ€๋Šฅํ•œ ๊ฐ’ ์œผ๋กœ ์—ด๊ฑฐ ์ž ๋ผ๊ณ  ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‹๋ณ„์ž ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋œ ํ˜•์‹์ž…๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ์—ด๊ฑฐ ํ˜•์‹ ์˜ ๊ฐœ์ฒด๋Š” ์ด๋Ÿฌํ•œ ์—ด๊ฑฐ ์ž๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

enum type_name {
  value1,
  value2,
  value3,
  .
  .
} object_names;

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด , , , ... ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ’์œผ๋กœ type_name์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ˜•์ด ์ƒ์„ฑ ๋ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ๊ฐ์ฒด(๋ณ€์ˆ˜)๋Š” ๋กœ ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์„ ์–ธ์œผ๋กœ ์ƒ‰์ƒ์„ ์ €์žฅํ•˜๋„๋ก ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.value1value2value3object_names

colors_t

 

enum colors_t {black, blue, green, cyan, red, purple, yellow, white};

์ด ์„ ์–ธ์€ ์ •์˜์— ๊ธฐ๋ณธ ์œ ํ˜•๋„ ๋ณตํ•ฉ ์œ ํ˜•๋„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‹์œผ๋กœ ๋งํ•˜๋ฉด, ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๊ธฐ์กด ์œ ํ˜•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๋ณ€์ˆ˜ color_t๊ฐ€ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ์ค‘๊ด„ํ˜ธ ์•ˆ์— ๋‚˜์—ด๋œ ์—ด๊ฑฐ์ž์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด colors_t์—ด๊ฑฐํ˜•์ด ์„ ์–ธ๋˜๋ฉด ๋‹ค์Œ ํ‘œํ˜„์‹์ด ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

colors_t mycolor;
 
mycolor = blue;
if (mycolor == green) mycolor = red;

๋กœ ์„ ์–ธ ๋œ ์—ด๊ฑฐํ˜• ์˜ ๊ฐ’ enum์€ ์•”์‹œ์ ์œผ๋กœ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๊ทธ๋Ÿฌํ•œ ์š”์†Œ enum๋Š” ํ•ญ์ƒ ๋‚ด๋ถ€์ ์œผ๋กœ ๋™๋“ฑํ•œ ์ •์ˆ˜ ์ˆซ์ž๊ฐ€ ํ• ๋‹น๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์•”์‹œ์ ์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ฌ๋ฆฌ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ฐ€๋Šฅํ•œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ์ •์ˆ˜ ๊ฐ’์€ 0, ๋‘ ๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์€ , 1์„ธ ๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์€ 2์ž…๋‹ˆ๋‹ค... ๋”ฐ๋ผ์„œ colors_t์œ„์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์—์„œ black๋Š” 0, , to ๋“ฑ๊ณผ blue๊ฐ™์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค...1green2

์—ด๊ฑฐํ˜•์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฐ’์— ๋Œ€ํ•ด ํŠน์ • ์ •์ˆ˜ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋’ค์— ์˜ค๋Š” ์ƒ์ˆ˜ ๊ฐ’ ์ž์ฒด์— ์ž์ฒด ๊ฐ’์ด ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๋™์ผํ•œ ๊ฐ’์— 1์„ ๋”ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

enum months_t { january=1, february, march, april,
                may, june, july, august,
                september, october, november, december} y2k;

y2k์ด ๊ฒฝ์šฐ ์—ด๊ฑฐํ˜• ์˜ ๋ณ€์ˆ˜ ๋Š” ์—์„œ ๋กœ ์ด๋™ ํ•˜๊ณ  ๋ฐ ์‚ฌ์ด ์˜ ๊ฐ’์— ํ•ด๋‹น months_tํ•˜๋Š” 12๊ฐœ์˜ ๊ฐ€๋Šฅํ•œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .januarydecember112011january1

์—ด๊ฑฐํ˜• ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ์—ด๊ฑฐํ˜•

๊ทธ๋Ÿฌ๋‚˜ C++์—์„œ๋Š” enum์•”์‹œ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•  int์ˆ˜ ์—†๊ณ  type ์˜ ์—ด๊ฑฐ์ž ๊ฐ’๋„ ๊ฐ–์ง€ ์•Š๊ณ  intํ˜•์‹ enum์ž์ฒด์˜ ์‹ค์ œ ํ˜•์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ˜•์‹ ์•ˆ์ „์„ฑ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋Œ€์‹  enum class(๋˜๋Š” ) ์œผ๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค .enum structenum

enum class Colors {black, blue, green, cyan, red, purple, yellow, white};

์œ ํ˜• ์˜ ๊ฐ ์—ด๊ฑฐ์ž ๊ฐ’์€ ํ•ด๋‹น enum class์œ ํ˜•์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” ์‹ค์ œ๋กœ enum์œ ํ˜•์—์„œ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์„ ํƒ ์‚ฌํ•ญ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค). ์˜ˆ๋ฅผ ๋“ค์–ด:

Colors mycolor;
 
mycolor = Colors::blue;
if (mycolor == Colors::green) mycolor = Colors::red;

๋กœ ์„ ์–ธ๋œ ์—ด๊ฑฐ ํ˜•์‹์€ enum class๊ธฐ๋ณธ ํ˜•์‹์„ ๋” ๋งŽ์ด ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์œ ํ˜•์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” char, short๋˜๋Š” ์™€ ๊ฐ™์€ ๋ชจ๋“  ์ •์ˆ˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . unsigned int์ด๊ฒƒ์€ ์ฝœ๋ก ๊ณผ ์—ด๊ฑฐ ์œ ํ˜• ๋‹ค์Œ์— ์˜ค๋Š” ๊ธฐ๋ณธ ์œ ํ˜•์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

enum class EyeColor : char {blue, green, brown};

์—ฌ๊ธฐ์„œ Eyecolor๋Š” a char(1๋ฐ”์ดํŠธ)์™€ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๊ตฌ๋ณ„ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

'๐Ÿ“ Development Study > ๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ป C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํด๋ž˜์Šค(2)  (0) 2022.08.19
ํด๋ž˜์Šค(1)  (0) 2022.08.19
๊ตฌ์กฐ์ฒด  (0) 2022.08.19
๋™์  ๋ฉ”๋ชจ๋ฆฌ  (0) 2022.08.19
ํฌ์ธํ„ฐ  (0) 2022.08.19

๋Œ“๊ธ€