sonumb

C Preprocessor 본문

개발자 이야기/C/C++

C Preprocessor

sonumb 2008. 1. 30. 21:32

#define FOO1

#ifdef FOO1
   # define MONTH  1
   # define DAY 1
#elif FOO2
   # define MONTH 2
   # define DAY 6
#endif

#include <stdio.h>

int main ( void )
{
    printf("%d월 %d일 \n" , MONTH, DAY ) ;
    return 0;
}

위의 Preprocessor를 잘 보기 바란다.

여기서 사소한 퀴즈 두개.

  • 위에서 #elif FOO2 는 과연 문법에 맞는 것 일까?

틀렸다 . #elif defined( FOO2 ) 이나 #else ifdef  FOO2  로 해야된다.

  • 사실 #elif FOO2 는 문법에 틀렸으나 컴파일이 잘된다. 무슨 일이 벌어졌나?

이전에 #define FOO20이 아닌 값을 가진다면 컴파일이 잘된다. :-)

예를 들어

#defined FOO2 0xFF

#ifdef FOO1
   ...

#elif FOO2
   # define MONTH 2
   # define DAY 6
#endif

....

출력:

   2월 6일

컴파일이 잘되는 것을 확인 할 수 있을 것이다.

반응형