다른 예를 한번 들어볼까요?
다음 코드로 설명을 하죠. 앞의 숫자는 쉽게 이해하기 위해 임시로 적어 놓은 라인 번호입니다.
_______________________________
01:#define _DEBUG
02:
03:func()
04:{
05: #ifdef _DEBUG
06: printf("디버그 모드\n");
07: #endif
08:
09: #ifndef _DEBUG
10: printf("일반 모드\n");
11: #endif
12:}
--------------------------------
#ifdef _DEBUG는 _DEBUG가 #define문으로 정의 되어 있다면 아래라인 부터
#endif전 라인까지 포함시키라는 전처리 지시어입니다.
그리고 #ifndef _DEBUG는 _DEBUG가 #define문으로 정의 되어 있지 않다면 아래라인 부터 #endif전 라인까지 포함시키라는 전처리 지시어입니다.
첫번째 라인에서 #define _DEBUG "_DEBUG"를 정의해 주었으므로
#ifdef _DEBUG ~ #endif사이는 포함이 될것이고 #ifndef _DEBUG ~ #endif사이는
포함이 안 될것입니다.
아래는 전처리기로 처리된 소스입니다.
_______________________________
02:
03:func()
04:{
06: printf("디버그 모드\n");
08:
12:}
--------------------------------
이정도면 충분히 이해하실거라 생각합니다. =)
참고로 _DEBUG는 실제로 Visual C에서 디버그 모드에서 기본으로 포함시키는 이름으로 디버그 모드에서만 실행시키고 쉽은 디버그 전용 코드를 #ifdef _DEBUG ~ #endif로 감싸서 사용합니다.
'old drawer > C, C++, MFC' 카테고리의 다른 글
[Effective C++ 요약] 11. operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자. (0) | 2013.12.12 |
---|---|
[Effective C++ 요약] #7 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하라. (0) | 2013.12.02 |
[C/C++] INI 함수 클래스 (0) | 2013.08.06 |
[MFC] File Operations Source (0) | 2013.08.06 |
[MFC] Type Casting Source (0) | 2013.08.06 |