9. 조건부 컴파일
조건부 컴파일이란 특정한 조건이 성립될 때나 또는 성립되지 않는 경우에만 지정한 범위의 문장을 컴파일 하거나 컴파일 하지 않게 하는 것을 말합니다.
이는 특정한 조건이 아닌 여러 상황에 맞게 컴파일 되어 프로그램의 이식성이 높아지게 합니다.
1) #if #else #endif
#if #else #endif 사용형식
#if 조건식
명령문1
#else
명령문2
#endif
조건식을 만족하게 되면 명령문1을 수행하고 만일 조건식을 만족하지 못하면 명령문2를 수행합니다.
8-15 실습예제 (조건부 컴파일을 이용한 프로그램)
#include<stdio.h>
#define JUMSU 50
#if (JUMSU >= 100)
#define JUMSU1 100
#else
#define JUMSU1 0
#endif
int main()
{
printf("%d\n",JUMSU1);
return 0;
}
0
위의 프로그램에서 JUMSU가 50으로 정의 되어 있으므로 else 다음 문장을 컴파일 하게 됩니다.
따라서 0이 출력됩니다.
만일 JUMSU를 100 이상의 숫자로 정의 하게 되면 100이 출력되게 될 것입니다.
2) #ifdef #else #endif
#if #else #endif 사용형식
#ifdef MACRO(조건문)
명령문1
#else
명령문2
#endif
조건문에 해당하는 매크로이름이 있다면 명령문1을 수행하고 만일 없다면 명령문2를 수행하게 됩니다.
3) #ifndef #else #endif
#ifndef #else #endif 사용형식
#ifndef MACRO(조건문)
명령문1
#else
명령문2
#endif
#ifdef 와 반대되는 기능을 하며 조건에 맞게 컴파일 하게 됩니다.
8-16 실습예제 (조건부 컴파일을 이용한 프로그램)
#include
<stdio.h>
#define MIN 100
int main()
{
int i, j;
i = -100;
j = 0;
printf("i = %d\n",i);
#ifdef MIN
printf("MIN = %d\n",MIN);
#endif
#ifndef MIN
printf("MIN = %d\n",MIN);
#else
printf("MIN = -100\n");
#endif
printf("j = %d\n",j);
return 0;
}
i = -100
MIN = 100
MIN = -100
j = 0
i = -100 이라는 문장을 먼저 출력하고 만일 MIN이라는 매크로가 있다면 MIN을 출력하라는 조건부 컴파일 문이 되고 다음 조건부 컴파일 문은 만일 MIN이라는 매크로가 없다면 MIN을 출력하고 그렇지 않다면 -100을 출력하라는 명령문을 수행하게 됩니다.
조건부 컴파일이 끝나게 되면 j를 출력하게 됩니다.
이처럼 조건부 컴파일은 특정한 상황에 맞게 컴파일 할 수 있도록 해 주는 기능을 가지고 있습니다.
[프로그래밍] 포인터 너는 누구냐? (0) | 2016.10.15 |
---|---|
[프로그래밍] 10. typedef (0) | 2016.10.07 |
[프로그래밍] 8. Macro (0) | 2016.10.07 |
[프로그래밍] 7. #include (0) | 2016.10.06 |
[프로그래밍] 6. 전 처리문의 종류 (0) | 2016.10.06 |