가드 포함은 상호 재귀 포함으로부터 헤더 파일을 보호합니다.
상호 포함 헤더의 데이터 구조 정의 간에 종속성이 있을 때 문제가 발생합니다. 예:
// a.h #include "b.h" struct A { ... }; // b.h #include "a.h" struct B { A* pA; // error: class A is forward-declared but not defined };
이 문제를 해결하려면 include 가드 대신 전방 선언을 사용해야 합니다.
// b.h #include "a.h" // Forward declaration of A struct A; struct B { A* pA; };
Includeguard는 동일한 번역 단위에 중복되는 내용이 포함되지 않도록 헤더를 보호합니다. 그러나 서로 다른 번역 단위에 존재하기 때문에 여러 정의가 여전히 발생할 수 있습니다.
이 문제를 해결하려면 인라인 키워드를 사용하여 다양한 번역 단위에 여러 정의를 허용할 수 있습니다.
// header.h inline int f() { ... }
또는 여러 정의를 방지하기 위해 함수 정의를 별도의 소스 파일로 이동할 수 있습니다.
// source.cpp int f() { ... }
위 내용은 가드 포함이 상호 재귀 및 다중 정의를 방지하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!