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};
위 변수는 디버거에 표시되고, 일반적인 변수 스코프를 따른다.