조건부 컴파일 전처리 명령어

#elif
#if
#else
#endif
#ifdef
#ifndef

전처리 컴파일 명령어입니다

상황에따라  컴파일하느냐 그냥 넘기느냐 의 용도로 씌입니다

사용법은

#if( 조건식1)
컴파일할문장1

#elif(조건식2)
컴파일할문장2

#else
컴파일할문장3

#endif


조건식 1이 ture -> 컴파일
                 false ->조건식 2검사     ture -> 컴파일2
                                                     false -> 컴파일3               #endif 로 전처리문장종료;

-----------------------------------------------------------------------------

#ifdef

매크로명의 정의도어있을때 실행되는 조건명령어입니다 사용법은 위와같습니다

#ifdef(매크로명)
컴파일할문장1

#elif(조건식1)
컴파일할문장2

#else
컴파일할문장3

#endif


---------------------------------------------------------------------------

#ifndef

매크로명이 정의되어 있지 않을때 실행되는 조건명령어입니다 사용법은 동일합니다

#ifdef(매크로명)
컴파일할문장1

#elif(조건식1)
컴파일할문장2

#else
컴파일할문장3

#endif

---------------------------------------------------------------------------

한가지 주의할점은 기본함수와다르게 영역을 나누지않습니다

#endif

이문장으로 조건부명령어의 끝을 알려주어야합니다





전처리 명령어는 프로그램의 호환성을 높여줍니다

예를들어

c언어의 기본문법이 같을지라도 컴파일러와 버전에따라서 자료형의크기나 지원되는 라이브러리 함수가 다를수있습니다.

그러므로 여러가지 컴파일러에서 모두 컴파일 될수있도록 코드를 작성한후 실제 컴파일할때

컴파일러에 맞는 코드를 선택할수 있도록 합니다.


요즘 컴파이 환경에서는 씌이지 않을수있지만 알아두면 좋습니다


예제)

#include <stdio.h>
#define Tc                    // TC매크로명 정의

#ifdef TC                       //tc매크로 정의되어있다면
#include <conio.h>              //두줄 컴파일
#difine MAX_INT 32767           //
#else                                         // 그렇지않다면
#define MAX_INT 2147483647             //이문장 컴파일
#endif                                         // ifdef 끝


int main()
{
int m=MAX_INT;                   // int형 변수에 max_int 값 초기화
#ifdef TC                         //매크로 tc 정의되어있다면
clrscr();                       // 문장컴파일
#endif                        //ifdef 끝
printf(\"MAXIMUM vakue => %d\\n\",m);
#ifdef TC                         //tc정의되어있다면
getch();                               //컴파일
#endif                                    //ifdef 끝
return 0;
}