2012-07-02 4 views
1

내가 메인 파일, vector.c, vector.h로 비교적 간단한 C 프로그램에서 일하고 있어요,하지만 난이 문제로 실행 해요 : 할C 자원

  • 두 개의 C 파일에 선언이 제공되면 .h 파일에 대한 포함을 넣습니다.
  • 어디서 3 개의 파일 모두에 typedef를 넣어야합니까?

gcc는 내가하는 일에 상관없이 불만을 나타냅니다.

누구나이 질문에 답하거나 내가 읽을 수있는 자료를 가르쳐 줄 수 있습니까?

답변

2

어디에서 제공하는 선언이 두 c 파일 모두에 필요하면 .h 파일에 대한 포함을 넣을 수 있습니까?

main.c에 vector.c에, 귀하의 경우, 헤더 정의를 필요로하는 각 C 파일에 include 문을 넣습니다. include guards을 사용하는 것은 항상 좋은 생각이며, 컴파일러가 이미 정의 된 기호에 대해 불만을 제기하거나 다중 정의가 필요한 경우에 필요합니다.

어디서 3 개의 파일 모두에 typedef를 넣어야합니까?

이 따라 달라집니다 typedefs이 벡터 API에 필요한, 또는 특정 경우

  • 는 다음 vector.h에 넣어.
  • 벡터 인터페이스와 아무 관련이 없다면 (즉, main.c에만 해당), 그들은 아마 거기에 속할 것입니다. ,
  • 는하지만 그들은 모두 3 개 파일을 필요할 때 언급, 그래서이 typedefs이 벡터 인터페이스의 일부가 아닌 경우 그들은 아마 common.h과 같은 예를 들어 뭔가를, 제 3 헤더 파일에 속하는 이는 프로젝트의 다른 모든 파일에도 포함될 수 있습니다. 아주 자연스럽게
2

는 :

  • 당신은 그것을 필요로 중 C 파일 (들)에서 헤더를 포함한다.
  • typedef은 선언이므로 헤더 파일을 넣기에 적합합니다.

헤더가 포함 된 헤더가 있지만 필요하지 않은 경우 여러 경우에 대한 보호가 필요할 수 있습니다. 모든 C 파일은 자체적으로 컴파일된다는 것을 기억하십시오. 물론 #include을 C 파일과 함께 사용하지 마십시오.

+0

+1 "때때로"비트를 버리고 OP를 포함 가드의 설명으로 가리 킵니다 : 모든 헤더가 원을 그리는 것보다 여러 번 포함 된 것처럼 보호하는 것이 훨씬 쉽습니다 다른 누군가가 무언가 보이는'#include '를 추가 한 후에 컴파일이 시작되었습니다 :) – dasblinkenlight