책 정리/Effective C++ 3판
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자.
최익필
2008. 5. 29. 22:50
부재 : 가급적 선행 처리자보다 컴파일러를 더 가까이 하자.
이유
1. 컴파일러는 #define을 알아차리지 못하기 때문에, 디버그가 힘들어지기 때문이다.
주의점
1. const로 상수화 시킬때 포인터라면 데이터와 포인터 역시 막아야 한다.
- const char * const authorname = "Scott Meyers";
2. 클래스 상수 멤버상수는 static const int a = 5; 로 사용 하면 좋다.
3. 클래스를 컴파일 도중 클래스 상수(클래스에서만 쓰일) 값이 필요하다면 enum을 사용 하는게 좋다.
- enum에 대한 참조자를 갖지 못한다.
- 메모리를 사용하지 않는다.
4. #define 함수는 잦은 버그가 있기 때문에 inline함수를 하면 더 좋다.
이것만은 잊지 말자!
1. 단순한 상수를 쓸때는 const 객체 or enume을 우선 적용 할수 있는지 생각한다.
2. #define 함수보다는 inline함수를 우선 적용 할수 있는지 생각해 본다.
개인적인 생각
1. 1항목으로 비추어 볼때, 어느 개념에서나 쓸수 있을것으로 판단된다.
관련링크
http://ikpil.tistory.com/282
http://nbloger.net/2690082
이유
1. 컴파일러는 #define을 알아차리지 못하기 때문에, 디버그가 힘들어지기 때문이다.
주의점
1. const로 상수화 시킬때 포인터라면 데이터와 포인터 역시 막아야 한다.
- const char * const authorname = "Scott Meyers";
2. 클래스 상수 멤버상수는 static const int a = 5; 로 사용 하면 좋다.
3. 클래스를 컴파일 도중 클래스 상수(클래스에서만 쓰일) 값이 필요하다면 enum을 사용 하는게 좋다.
- enum에 대한 참조자를 갖지 못한다.
- 메모리를 사용하지 않는다.
4. #define 함수는 잦은 버그가 있기 때문에 inline함수를 하면 더 좋다.
이것만은 잊지 말자!
1. 단순한 상수를 쓸때는 const 객체 or enume을 우선 적용 할수 있는지 생각한다.
2. #define 함수보다는 inline함수를 우선 적용 할수 있는지 생각해 본다.
개인적인 생각
1. 1항목으로 비추어 볼때, 어느 개념에서나 쓸수 있을것으로 판단된다.
관련링크
http://ikpil.tistory.com/282
http://nbloger.net/2690082