#ifndef S_H_

#define S_H_


struct Foo

{

    int x;

};


#endif



위의 파일이 foo.h이고 다른 여러 파일들에 인클루드된다고 쳐보자
이렇게만 되어있으면 너가 경험한 중복 심볼 문제가 생길거 같냐?
안생긴다


#ifndef S_H_

#define S_H_


struct Foo

{

    int x;

};


Foo _Foo; ///////// 추가된 부분


#endif


전역 변수 하나 추가해놔보자

에러 생기냐? 이땐 생기지


Foo 타입을 갖는 변수 _Foo가 중복됐다고 에러메세지가 뜨는데 넌 자꾸 Foo가 중복이라고 헛스윙하고 있는거야