프로젝트 내 인클루드 관련 질문입니다.

imi0814의 이미지

visual studio 2005를 사용하고 있습니다.

졸업 프로젝트로 간단한 게임을 개발하기 위해 개발자 kit을 다운 받아서 예제를 가지고 놀고 있는데요

문제는 제가 새로운 파일을 추가로 인클루드 하려고 할 때 발생하였습니다.

vs에서 옆에 솔루션 어쩌고 창을 이용해서 파일을 추가한 다음에 거기에 제가 사용할 클래스들을 추가로 만들었는데

a.c 와 b.c 두개의 파일 모두에서 그 클래스들을 사용해야 해서 모두 인클루드 했더니 이 중으로 선언이 된다고

에러가 납니다.

a.c 가 b.c를 인클루드 하고 있길래 b.c에만 클래스.h를 인클루드 시켰더니 또 a.c에서 사용을 못 합니다.

어떻게 인클루드 해야 하는지;;

newmania의 이미지

이걸로 해결될까요?

#ifndef _클래스_H_
#define _클래스_H_

//여기에 header file body 를 넣습니다.

#endif /* _클래스_H_ */

imi0814의 이미지

이따 집에 가서 한번 해보긴 해야겠는데
#ifndef 헤더_H
#define 헤더_H

내용

#endif

이렇게는 해봤었는데 안 됬었거든요

klara의 이미지

c파일을 왜 인클루드하나요...? 그리고 '클래스'라고하셨는데, C++이 아니라 C인가요...?

imi0814의 이미지

haptics.h를 인클루드 하고 있었군요... haptics.cpp도 있어서 착각했습니다. 원래 cpp 파일은 인클루드 하면 안 되나요? 만약에 a.cpp에 b.cpp를 인클루드 하고 싶다면 b.h에 선언을 하고 b.h를 인클루드 해야 하는 건가요? 왜 바로 인클루드 못 하죠? ;; 왕초보라..

klara의 이미지

인클루드하는 것은 해더파일입니다.

예를 들어 A라는 클래스가 a.h에 선언되어있고 a.cpp에 구현되어있을때, b.cpp에서 A클래스를 쓸려고 a.cpp를 인클루드한다면, 일단 클래스 정의가 없으므로 에러가 날것입니다.

그렇다고 해더파일없이 클래스 정의와 구현을 전부 a.cpp에서 한다면 a.cpp파일을 인클루드 할때마다 동일한 코드가 각각의 오브젝트 파일에 생성되므로 쓸데없이 용량만 커지며, (확실힌 모르겠지만) 중복정의로 제대로 빌드가 안될지도 모르겠네요.

게다가 cpp는 구현파일이므로, 컴파일시 의존성문제도 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.