여러 부분으로 구성된 프로젝트를 컴파일하는 데 문제가 있습니다. 올바른 #ifndef/#define
문을 포함하고 헤더 파일을 올바르게 포함 시켰다고 생각했지만 분명히 아닙니다. 필요한 경우간단한 컴파일러 질문
[23:18]andrew final_project$:g++ driver2.cpp fish.cpp bay.cpp
ld: duplicate symbol Fish::Fish() in /var/folders/cc/cc+as-5yHSqg0Jcr+X2+uk+++TI/-Tmp-//ccqNXrPE.o
and /var/folders/cc/cc+as-5yHSqg0Jcr+X2+uk+++TI/-Tmp-//cc5dOIm5.o for
architecture x86_64
collect2: ld returned 1 exit status
이 좀 더 정보를 포함 할 수 있지만, 내 두 헤더 파일 (fish.h
및 bay.h
가)와 bookended하게된다 :이 오류를 컴파일 할 때까지했다.
#ifndef FOO
#define FOO
...
#endif
내 두 개의 실행 파일이 fish.cpp
및 bay.cpp
있습니다.
fish.cpp : #include "fish.h"
bay.cpp : #include "bay.h" #include "fish.h"
내 드라이버 프로그램 driver2.cpp : #include "fish.cpp" #include "bay.cpp"
나는 문제가 bay.cpp 모두 물고기를 포함한다는 사실에있다 가정합니다. h와 bay.h를 포함하지만, fish.h를 포함하지 않으면 "bay"(물고기 그리드)가 정의되지 않습니다. 문제가 너무 어렵지는 않겠지 만 해결책을 찾을 수없는 것 같습니다. 사전에
--Thanks, 세그먼테이션 폴트 (segfault) 맥기
모든 헤더는 고유 한 #ifndef 이름으로 묶어야합니다. –
그들은 있습니다! 방금 단순함을 위해 foo를 사용했습니다 ... –