프로그래밍

c언어/c++ enum

업글 2020. 10. 14. 06:51

안녕하세요 업글입니다. c언어 enum 사용 시 간단한 팁을 공유드립니다.

 

enum의 정의와 문법에 대해서 모르시는 분은 구글링을 통해서

이해하시고 보시는 것을 추천드립니다.

 

예를 들어서 설명드리겠습니다.

 

0 ~ 3까지 상수에 이름을 붙일 때

#define과 enum을 통해서 아래와 같이 각각 상수에 이름을 붙일수 있습니다.

 

#define ZERO 0

#define FIRST 1

#define SECOND 2

 

enum{

 ZERO,

 FIRST,

 SECOND,

}

 

enum을 사용하는 경우 몇가지 장점이 있습니다.

 

1. 추가로 상수에 이름을 붙여야 하는 경우 일일이 #define으로 써줘야 하지만

enum의 경우 가장 밑의 정의에 추가만 해주면 되므로 상수 추가 시 편리합니다.

 

#define ZERO 0

#define FIRST 1

#define SECOND 2

#define THIRD 3

 

enum{

 ZERO,

 FIRST,

 SECOND,

 THIRD

}

 

2. enum의 경우 각 상수들이 묶여 있으므로 코드의 의도를 파악하기 쉽습니다.

이는 시간이 오래 지난 후 코드를 보거나 타인이 코드를 이해할 때 가독성이 증가하게 됩니다.

 

3. enum의 경우 상수의 카운트 값을 자동으로 받아올 수 있습니다.

상수의 개수 크기의 배열을 사용하는 경우를 예를 들어서 설명 드리겠습니다.

 

#define ZERO 0

#define FIRST 1

#define SECOND 2

#define THIRD 3

#define CONSTANT_LENGTH 4

 

enum{

 ZERO,

 FIRST,

 SECOND,

 THIRD,

 

 CONSTANT_LENGTH // 마지막 상수 + 1

}

 

int arr[CONSTANT_LENGTH];

int sum = 0;

 

for(int i=0; i<CONSTANT_LENGTH; i++){

 sum += arr[i];

}

 

위의 예시 코드에서 4에 추가로 이름을 부여했을 때

#define의 경우 CONSTANT_LENGTH를 5로 변경해주어야 하지만

enum의 경우 THIRD뒤에 FOURTH만 추가해주면 CONSTANT_LENGTH의 값이

자동으로 5로 변경되기 때문에 코드를 수정하는 경우 실수를 줄일 수 있습니다.

#define ZERO 0

#define FIRST 1

#define SECOND 2

#define THIRD 3

#define FOURTH 4

 

#define CONSTANT_LENGTH 5 // 4에서 5로 변경 필요

 -> 코드가 복잡해지는 경우 실수로 변경하지 않았을 때

     버퍼 오버플로우가 발생할 수 있으므로 원인 파악이 어려울 수 있음

 

enum{

 ZERO,

 FIRST,

 SECOND,

 THIRD,

 FOURTH,

 

 CONSTANT_LENGTH // 마지막 상수 + 1

}

 -> FOURTH만 추가해도 CONSTANT_LENGTH가 자동으로 변경

 

'프로그래밍' 카테고리의 다른 글

쓰레드(Thread)에 대한 생각  (0) 2020.11.12
c언어/c++ int 크기  (0) 2020.11.11
c언어/c++ const  (0) 2020.10.21
주석에 대한 생각  (0) 2020.10.19
c언어/c++ static  (0) 2020.10.19