Effective C++ 3판에서 봤던 내용이 기억 나는데, 전처리 매크로(#define)가 위험하기 때문에 C++ 스타일을 사용하자고 제안했던 것을 볼 수 있다. 일전에 동기인 강일이형이 보여 주었던 전처리 매크로(#define)의 문제점을 통해서 확신이 들었다.
이번 항목은 이런 전처리 매크로를 아직 쓰는 이유와 어떻게 대처 할 수 있는지에 대해서 이야기 하고자 한다.
1. 헤더 꼬임 방지하기
즉 헤더가 꼬이는 것을 방지하는 것을 위해서 사용 한다.
2. 전처리 기능 접근하기
좀 편하게 진단 코드를 사용 할 수 있기 위해서 사용 한다.
관련 링크 : C/C++ Preprocessor Reference Predefined Macros
3. 컴파일 타임에 코드 선택하기
- 디버그 코드와 릴리즈 코드를 나누기 위해서
- 플랫폼에 따른 코드를 나누기 위해서
- 보다 다양한 타입을 설정하기 위해서(하지만 이것은 enum 을 사용을 먼저 고려해야 된다고 생각한다)
C++ 창시자의 전처리기를 어떻게 생각하는지 궁금하다면 비야네님 싸이트에 가는게 좋을듯 싶다. 물론 영어다.
총평
헤더 꼬임 방지는 #pragma once 와 같이 사용 하고 있다. 전처리 기능 접근하기 위해서는 어쩔수 없다. : ) 그리고 컴파일 타임 코드 선택하는 것은 보통 라이브러리 제작자가 사용 한다. 나같은 경우 거의 사용하지 않는다.
나름 재미있는 항목이였다.
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 24 : 왜 다중 상속을? ( 난이도 : 6 ) (0) | 2008.12.16 |
---|---|
항목 31 : 스마트 포인터 멤버 Part 2 : ValuePtr을 향해 ( 난이도 : 6 ) (0) | 2008.12.14 |
항목 30 : 스마트 포인터 멤버 Part 1 : auto_ptr로 인해 생길 수 있는 문제 ( 난이도 : 5 ) (0) | 2008.12.14 |
항목 29 : auto_ptr 사용 하기 (난이도 : 5) (0) | 2008.12.14 |
항목 35 : #define (난이도 : 4) (0) | 2008.12.13 |
항목 33 : 네스티드 함수 시뮬레이션 (nested function) ( 난이도 : 5 ) (0) | 2008.12.13 |
항목 32 : 재귀적인 선언 ( 난이도 : 6 ) (0) | 2008.12.13 |
항목 40 : 네임스페이스 Part 2 : 네임스페이스로 마이그레이션(migration) (난이도 : 4) (0) | 2008.12.08 |
항목 39 : 네임스페스 Part 1 : using 선언과 using 지시자 (난이도 : 2) (1) | 2008.12.08 |
항목 38 : typedef (난이도 : 3) (0) | 2008.12.08 |
최근댓글