이유
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를 폐기하기 까진 전처리기를 사용하겠지만, 좀 더 길고 자주 휴가를 전처리에게 줘라~
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를 폐기하기 까진 전처리기를 사용하겠지만, 좀 더 길고 자주 휴가를 전처리에게 줘라~
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 10. operator new를 작성한다면 operator delete도 작성한다. (0) | 2008.05.07 |
---|---|
항목 9. new의 "정상"형식을 감추지 않는다. (0) | 2008.05.07 |
항목 8. operator new와 operator delete 작성시 관례를 따른다. (0) | 2008.05.07 |
항목 7. 메모리가 모자랄 경우에 대비한다. (0) | 2008.05.07 |
항목 6. 소멸자에서 포인터 맴버에 대해 delete를 이용 한다. (0) | 2008.05.07 |
항목 5. new와 delete의 사용시 동일한 형식을 이용한다. (0) | 2008.05.07 |
항목 4. C++ 스타일의 주석을 지향한다 (3) | 2008.05.07 |
항목 3. malloc과 free보다는 new와 delete를 사용한다. (0) | 2008.05.07 |
항목 2. <stdio.h> 보다는 <iostream>을 사용 한다. (0) | 2008.05.07 |
하루에 10개씩 5일 동안 볼 생각이였는데, 내 수준으론 조금 벅차다 (0) | 2008.05.07 |
최근댓글