C++

[C++] 심볼릭 상수 (Symbolic Constant)

kugnuoy 2024. 1. 16. 18:38

매직 넘버를 사용하는 것은 좋지 못한 습관이다.

 

매직 넘버란 아래 코드와 같이 한 반의 최대학생 수를 30으로 나타내는 것이다.

int maxStudents = numClassrooms * 30;

 

매직넘버 대신 심볼릭 상수를 정의하는 것이 바람직한데

심볼릭 상수는 상수 리터럴 값이 지정된 이름이다. 그 방법은 두 가지 있다.

 

1. 매크로를 사용한다. (bad)

#define MAX 30

매크로를 사용하면 전처리기가 MAX를 발견하면 30으로 대체한다. 여기에는 두 가지 문제가 있다.

첫 번째로, 매크로를 사용한 심볼릭 상수는 디버거에 표시되지 않는다.

두 번째로, #define 된 값은 항상 파일 스코프(범위)에 있으므로 나중에 #define된 값과 충돌할 수 있다.

 

2. const 변수를 사용한다. (good)

constexpr int MAX {30};

위 변수는 디버거에 표시되고, 일반적인 변수 스코프를 따른다.