이유
1. #define은 전처리기에서 작업하기 때문에 컴파일러가 모르게 된다.
2. 1번의 사항으로 이식성이 떨어지게 된다.
3. 1번의 사항으로 다른 파일의 헤더파일로 들어가면, 이것으로 인한 디버깅이 어려워진다.
4. 매크로함수의 버그 찾기가 어려워진다.

해결방법
변수 하나 더 주고, const를 사용 해라.

해결방법의 주의점 두가지
1. 상수 포인터를 정의할 때,
- const char* const authorName = "Scoot Meyers"; 식으로   어떤 변경도 못하게 해라.

2. 클래스 범위안에서의 상수일때
- static const int NUM_TURNS=5;   // 클래스 내부 private에다가 선언
이렇게 하면, 클래스의 전역구역(?)에 1개만 올라가서 클래스 내부에서만 접근 가능하고, 참조하여 사용 할수 있다.

덧붙여
1. #define 매크로를 이용하여 함수처럼 쓰지말고 inline을 써서 하는것이 좋지만, #define 매크로함수 정도는 표준 라이브러리(std)에 들어 있으므로, 한번 찾아보고 없다면 정의해서 써라.

2. #include를 폐기하기 까진 전처리기를 사용하겠지만,  좀 더 길고 자주 휴가를 전처리에게 줘라~




posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요