매크로 가드(Macro Guard)

Language/C Language


매크로 가드(Macro Guard)

#include 지시어 사용 시 발생할 수 있는 의도하지 않은 헤더 파일의 중복 포함 문제를 해결하기 위해 만들어진 구조


참조 : 위키피디아 (http://en.wikipedia.org/wiki/Include_guard)


Here, the file "child.c" has indirectly included two copies of the text in the header file "grandfather.h". This causes a compilation error, since the structure type foo is apparently defined twice. In C++, this would be a violation of the One Definition Rule.

"child.c" 에서 간접적으로 "grandfather.h" 헤더파일을 두번 포함시킨다. foo가 두번 정의되기 때문에, 이것이 컴파일 에러를 일으킨다.

따라서 아래와 같이 매크로 가드를 이용한다.


Here, the first inclusion of "grandfather.h" causes the macro GRANDFATHER_H to be defined. Then, when "child.c" includes "grandfather.h" the second time, the #ifndef test fails, and the preprocessor skips down to the #endif, thus avoiding the second definition of struct foo. The program compiles correctly.

GRANDFATHER_H로 매크로를 정의했다. 그러면 "child.c"가 "grandfather.h"헤더파일을 2번 포함할 때 #ifndef가 실패되고 전처리기가 #endif 부분으로 바로 내려가도록 처리하게 됨으로써 컴파일이 올바르게 된다.

'Language > C Language' 카테고리의 다른 글

QuickSort  (0) 2011.03.23
2-Way Merge Sort  (0) 2011.03.22
Hello world!  (0) 2011.02.07