2012-03-13 3 views
1

ncmpcpp의 소스 코드를보고 있었는데이 코드를 보았습니다.구현 파일이 없을 때 헤더 파일 포함?

#include <mpd/client.h> 

해당 파일 내부는 ncmpcpp에서 사용하는 기능입니다. 그러나 그것들은 단지 헤더 일뿐입니다. cpp 파일도 어딘가에 존재하지 않아야합니까? 나는 같은 디렉토리에서 그들을 찾을 수 없었다. 어디있어?

또한 포함 된 내용이 < 및>로 둘러싸여있을 때 어떻게 보이는지 어떻게 알 수 있습니까?

답변

4

제 3 자 라이브러리 인 경우 대부분 소스 코드가 포함되지 않습니다. 그것도 필요하지 않습니다. 헤더에 선언 된 모든 기호 (사용 예정)는 헤더와 함께 제공되었을 .lib 파일로 내보내 져야합니다.

template이 아닌 경우 인라인 수 있습니다.

코드를 직접 컴파일하려면 cpp 파일 또는 더 일반적으로 구현 파일 만 있으면됩니다. 당신은하지 않습니다. 헤더와 바이너리 만있는 모듈을 사용할 수 있습니다. 물론

는 오픈 소스 프로젝트의 예는 모든 파일이 일반적으로 포함되어 마음에 관해서하지만 상용 제품의 경우, 왜 소스 코드를 공개? 어떤 경쟁자가 그것을 그냥 복사하지 않고 새로운 이름으로 재판매하는 것은 무엇입니까?

myclass.h (이 <> 또는 ""로 구분됩니다 헤더를 찾을하는 방법 알려 표준 규칙은 없지만 일반적인 합의가 <> 시스템 헤더 (string 같은 또는 iostream)와 자신의 헤더 ""에 사용할 수 있다는 것입니다). 컴파일러에게 먼저 어디를보아야하는지 알려줍니다. 컴파일러는 이러한 일반적 .a 또는 .lib 파일 (매우 드물게 비록 당신이 .def 파일을해야 할 수도 있습니다)이며, 링크 할 수있는 그것과 라이브러리 (정적 또는 동적으로 링크)이 있으면

+0

이것은 소스에서 빌드 한 것에서 비롯되었으므로 구현 파일이 필요하지 않은 이유는 무엇입니까? –

+0

@javascriptninja : 최대 "동적 링크" –

+0

모듈을 BUIT 때 그들은 필요했다 봐, 그건 내가 말 했어요. –

2

소스 파일이 필요하지 않습니다. 검색 경로에 대한

은 MSVC에 대한 this 및 GCC에 대한 this 참조하십시오.

관련 문제