조건부 컴파일 #if #elif #else #endif

☆C언어 2013. 10. 9. 19:03

출처 : http://tmdgus.tistory.com/34

전처리 지시사 #if #elif #else #endif 는 컴파일러 (정확히 이야기하면 전처리기)에게 조건을 제시하는 경우에 사용된다.

사용되는 형식
--------------------------
#if CONDITION1

expression1
#elif CONDITION2
expression2
#else
expression3
#endif
---------------------------

위 형식은 다음과 같은 내용을 컴파일러에게 요구하는 것이다.
"CONDIONT1이 만족되면 expression1을 , CONDITION2가 만족되면 expression2를 이도 저도 아니면 expression3를
컴파일해라"

if ~ else if 문장과 상당히 유사한 형태를 지니고 있음을 알 수 있다.
다만 위의 문장은 전처리기에 의해 처리되기 때문에 컴파일 해야 할 대상을 지정할 때 사용하게 된다.

* 흔히 저지르는 실수 중 하나가 #endif 문장을 빼먹는 것이다. if ~ else if 문장과 달리 "여기까지입니다." 라고 정의를 해줘야
* 한다. 따라서 반드시 #endif가 포함되어야 한다.

참고* 일반적으로 함수의 정의를 헤더 파일에 포함시키지는 않는다 (선언만 헤더 파일에 포함한다.)!


0o 헤더 파일의 포함 관계에서 발생하는 문제 때문에 조건부 컴파일로 문제를 해결..한다.o0

-하나의 헤더 파일을 두 번 이상 포함
-이는 중보갷서 함수가 정의되거나, 변수가 선언되는 문제점
-조건부 컴파일로 문제 해결

#ifdef, #endif
if not define

ex)

#ifdef _COUNT_H_ ->> _COUNT_H 가 를 정의하지 않았다면
#define _COUNT_H_20 -- >>

int count=0 ->>> _COUNT_H를 정의하고 int 형 변수 count도 선언하고
#endif ->> 끝낸다.



_COUNT_H_ 는 헤더 파일 이름을 이용하여 만든것이다 조건부 컴파일을 위한 매크로를 정의하는 경우 어떠한 이름을 주건 상관없지만 이름이 중복되어서는 안될것이다. 파일의 이름은 중복될일이 없으므로 이를 이용하는것은 좋은 방법이고 또 가장 보편화되어 있다.



'☆C언어' 카테고리의 다른 글

달력 1~12월 다 찍어내기  (0) 2017.06.17
c언어 꿀팁  (0) 2014.10.14
2차원 배열 포인터  (0) 2012.09.18
이차원배열 동적할당  (0) 2012.09.12
exe의 작동이 중지되었습니다.  (0) 2012.05.12