ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [#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]|작성자 루트

Designed by Tistory.