2017-10-30 7 views
1

많은 라이브러리에서 하나의 .H 파일과 .CPP 파일의 두 파일을 보았습니다. .h는 함수 프로토 타입을 포함하는 헤더 파일이며 .CPP는 헤더 파일의 모든 함수에 대한 실제 C++ 코드를 포함합니다.C 라이브러리에서 라이브러리 만들기

단일 .h 파일을 만들고 모든 C++ 함수와 클래스를 작성할 수 있는지 물어보고 싶습니다. 그리고 .h 파일을 main.cpp에 반드시 포함시켜야합니다.

+0

예. 가능합니다. 그것은 당신이 필요로하는 것에 달려 있습니다. – DimChtz

+0

[머리말 전용 라이브러리의 장점] (https://stackoverflow.com/questions/12671383/benefits-of-header-only-libraries) – ilim

+0

의 중복 가능성 있음 '인라인'기능을 표시해야 할 수도 있습니다. – doctorlove

답변

6

예, 가능합니다. 이것은 때로는 헤더 전용 라이브러리라고합니다.

물론이 기능은 동일한 프로그램의 여러 CPP 파일에 포함될 수 있으므로 모든 인라인 (내부 연결, 정적 또는 익명 네임 스페이스 사용)으로 만들어야합니다.

우수 게시자 boost 라이브러리 모음에서 몇 가지를 볼 수 있습니다.

0

단일 .h 파일을 만들고 모든 C++ 기능 및 클래스를 작성할 수 있는지 물어보고 싶습니다. 그리고 그 .h 파일을 main.cpp에 반드시 포함시켜야합니다.

예, 그렇게 할 수 있습니다. 모든 정의를 헤더 파일에 인라인 할 수 있습니다.
헤더 만 (템플릿) 라이브러리가없는 한 이례적입니다.

정의를 개별 번역 단위로 분리하는 이유 중 하나는 구현의 일부 작은 비트가 변경 될 때 모든 종속 코드를 다시 컴파일 할 필요가 없다는 것입니다.

1

예이 작업을 수행 할 수 있습니다. 컴파일시 헤더의 모든 코드가 "main.cpp"파일에 붙여 넣어집니다. 선언이 헤더 나 hpp에 있고 그 다음에는 소스 나 cpp에서 구현이 완료되는 것이 표준입니다. 그러나 헤더에 모든 것을 넣을 수 있으며 컴파일 된 후 작동 할 헤더 파일을 포함 할 수 있습니다. "main.cpp"에 헤더의 내용을 정확히 선언 한 다음 다른 cpp 파일로 구현하고 .h 파일을 사용하지 않고 컴파일 한 다음 #include "MyClass.hpp"와 똑같이 작동합니다 (개인적으로 C++ 헤더에 hpp를 사용하고 c 헤더에 h를 사용하면 더 쉽게 사용할 수 있습니다.)