이전 챕터에서 (사용자가 원치 않더라도) 함수가 중복정의되는 문제 발생했다.
각 헤더 파일과 호출되는 순서를 살펴보고
중복정의가 되지 않도록 코드를 수정하였다.
하지만, 이는 매우 좋지 않다고 하였다.
그렇다면 어떻게 해결하면 좋을까?
이때 헤더가드를 사용하면 해결된다.
헤더 가드는 중복 정의를 막는다.
#include "horse.h"
#include "donkey.h"
int main() {
neigh();
hee_haw();
return (0);
}
#ifndef ABC // (1) 해당 프로젝트에서 겹치지만 않은 유일한 이름을 적으면 된다.
#define ABC // 이렇게 아무 이름이나 적는건 좋지 않아.
void neigh() {} // 말, 히힝
#endif
#ifndef DEF
#define DEF
#include "horse.h"
void hee_haw() {} // 당나귀, 히호
#endif