-
[#ifdef ~ #endif] 조건부 처리대학원 연구/TinyOS 2009. 2. 5. 11:07
오랜만에 C++ 상속에 대해 고민좀 하다가 조건부 컴파일이란 걸 보고 쓰게 됨.
#define, #ifdef, #ifndef, #endif 등 이것들을 '전처리기' 라고 합니다.
a. #define은 '매크로' 라고도 하며 값을 정의(치환)하는 역할을 합니다.
b. #ifdef는 'if define' = '만약 정의되어 있다면' 이란 뜻입니다.
c. #ifndef는 'if not define' = '만약 정의되어 있지 않다면' 이란 뜻입니다.
d. #endif는 꼭 b, c 끝에 써줘야 합니다.
전처리기 순서로 해석을 해보겠습니다.
#define STAR
'STAR' 라는 이름을 정의.
#ifdef STAR
printf("Star ");
#endif
만약 'STAR' 라는 이름이 정의되어 있다면, "Star " 문자열을 출력하는 printf 함수 실행
#ifndef CRAFT
printf("Craft ");
#endif
만약 'CTRAFT' 라는 이름이 정의되어 있지 않다면, 아래 명령 실행
#ifndef WAR
printf("\n");
#endif
만약 'WAR' 라는 이름이 정의되어 있지 않다면, 아래 명령 실행
주석처리된 두 코드를 주석 없애도 됩니다.
#ifndef STAR
#define STAR
#endif만약 'STAR' 라는 이름이 정의되어 있지 않다면 'STAR'를 정의함.
저 두 코드를 주석처리하나 주석 안하나 결과는 똑같습니다.
[출처] [#ifdef~#endif] [#ifndef~#endif]|작성자 루트