728x90

#ifdef#ifndef가 무엇이냐... 


우선 간단한 코드로 설명을 한번 해보겠습니다.


#define _STUDY


func() {

#ifdef _STUDY

printf("정의 되었다면...\n");

#endif


#ifndef _STUDY

printf("정의 되지 않았다면...\n");

#endif

}



ifdef 는 if define의 약자입니다. 즉 해석해보면 만약 정의되어있다면 .. 이라는 정도로 해석할수 있겠죠. 

여기선 _STUDY가 #define문으로 정의되어 있다면 아래라인부터 #endif 까지 사이의 코드가 적용됩니다.


ifndef는 not 즉 정의되어 있지 않다면입니다. _STUDY가 #define문으로 정의되어 있지 않다면 그 아래라인부터 #endif까지 사이의 코드가 적용되는거죠


위의 예제 코드는 #define으로 정의가 되어있으므로 최종적으로 코드는 


func() {

printf("정의 되었다면...\n");

}


이렇게 되어 적용된다는 겁니다. 비교적 간단합니다.


보통의 표준 라이브러리의 헤더 파일에도 이렇게 적용되어 있다 하고,,

프로젝트 파일이 커서 어느순간 자기도 모르게 동일한 헤더파일을 두번 이상 중복으로 등록한다거나 뭐 그런 경우도 있다합니다,,

뭐 이런 순간을 예방하기위해 #ifdef#ifndef등이 쓰인다고 합니다. 


거대한 프로젝트의 모든 소스를 한곳에 쓸리는 없고 나누어서 헤더파일 포함해서 서로 연결시키니 뭐 이런 잦은 실수도 일어날수 있는거겠죠..?




728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침