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
'C++' 카테고리의 다른 글
이클립스 C++ 환경 구축 (0) | 2013.10.05 |
---|---|
상속과 다형성 (0) | 2013.09.27 |
정보은닉(Data Hiding)과 캡슐화(Encapsulation) (0) | 2013.09.02 |
표준 라이브러리 헤더파일과 만든 헤더파일의 차이.. (0) | 2013.08.31 |
클래스와 객체..? (0) | 2013.08.31 |