프로젝트 내 인클루드 관련 질문입니다.
글쓴이: imi0814 / 작성시간: 수, 2008/02/20 - 9:09오후
visual studio 2005를 사용하고 있습니다.
졸업 프로젝트로 간단한 게임을 개발하기 위해 개발자 kit을 다운 받아서 예제를 가지고 놀고 있는데요
문제는 제가 새로운 파일을 추가로 인클루드 하려고 할 때 발생하였습니다.
vs에서 옆에 솔루션 어쩌고 창을 이용해서 파일을 추가한 다음에 거기에 제가 사용할 클래스들을 추가로 만들었는데
a.c 와 b.c 두개의 파일 모두에서 그 클래스들을 사용해야 해서 모두 인클루드 했더니 이 중으로 선언이 된다고
에러가 납니다.
a.c 가 b.c를 인클루드 하고 있길래 b.c에만 클래스.h를 인클루드 시켰더니 또 a.c에서 사용을 못 합니다.
어떻게 인클루드 해야 하는지;;
Forums:
이걸로
이걸로 해결될까요?
#ifndef _클래스_H_
#define _클래스_H_
//여기에 header file body 를 넣습니다.
#endif /* _클래스_H_ */
잘 모르겠습니다. 일단
이따 집에 가서 한번 해보긴 해야겠는데
#ifndef 헤더_H
#define 헤더_H
내용
#endif
이렇게는 해봤었는데 안 됬었거든요
c파일을 왜
c파일을 왜 인클루드하나요...? 그리고 '클래스'라고하셨는데, C++이 아니라 C인가요...?
아....
haptics.h를 인클루드 하고 있었군요... haptics.cpp도 있어서 착각했습니다. 원래 cpp 파일은 인클루드 하면 안 되나요? 만약에 a.cpp에 b.cpp를 인클루드 하고 싶다면 b.h에 선언을 하고 b.h를 인클루드 해야 하는 건가요? 왜 바로 인클루드 못 하죠? ;; 왕초보라..
인클루드하는 것은
인클루드하는 것은 해더파일입니다.
예를 들어 A라는 클래스가 a.h에 선언되어있고 a.cpp에 구현되어있을때, b.cpp에서 A클래스를 쓸려고 a.cpp를 인클루드한다면, 일단 클래스 정의가 없으므로 에러가 날것입니다.
그렇다고 해더파일없이 클래스 정의와 구현을 전부 a.cpp에서 한다면 a.cpp파일을 인클루드 할때마다 동일한 코드가 각각의 오브젝트 파일에 생성되므로 쓸데없이 용량만 커지며, (확실힌 모르겠지만) 중복정의로 제대로 빌드가 안될지도 모르겠네요.
게다가 cpp는 구현파일이므로, 컴파일시 의존성문제도 있습니다.
댓글 달기