끄적끄적

반응형

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
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]