안녕하세요 업글입니다. 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 |