클래스 정의할 때 .h? .hpp? 어느 걸 써야하죠?

조회수 12504회

저는 보통 클래스 정의할 때 .h에 했는데요 boost libaray에서는 다들 .hpp에 클래스를 정의해놓더라구요?

제가 그렇게 써본 적이 없어서 그런지 이상하게 보이던데 .hpp를 쓰면 무슨 장점이라도 있나요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    C의 헤더파일은 .h, C++의 헤더파일은 .hpp로 하시면 됩니다.

    CC++ 헤더 이름을 다르게 쓰는 이유는 다음과 같습니다.

    • CC++ 코드의 포맷을 다르게 쓰는 경우, editor에서 파일 형식에 따라 설정을 달리해 놓으면 editor가 자동으로 포맷을 맞춰줌
    • libraray가 C로 구현돼 있고 wrapperC++로 구현된 경우, header는 보통 이름이 비슷하기 때문에 파일 확장자로 구분해서 쓸 수 있음.(Feature.h / Feature.hpp)
    • 프로젝트가 C++버전에서 더 적절한 기능을 지원하는데 C 버전에서 쓰고 있는 경우, 헤더 이름을 언어(C/C++)에 따라 다르게 설정하면 C헤더를 찾아내서 C++ 버전으로 바꾸는 게 쉬움.

    CC++은 다른 언어고, 둘을 같이 쓰는 건 위험하기 때문에 권장하지 않는 방법입니다. 따라서 파일 이름을 다르게 지음으로써 어떤 언어가 쓰였는지 구분해 주는 것입니다.

    • 좋은 답변 잘 읽었습니다^^ 읽다가 질문이 생겨서 댓글을 남깁니다!! #include 처럼 .h,.hpp를 안쓰는 경우도 있던데 이런 경우는 memory가 어떤 파일 인거일까요?? 또 여줘뽀고 싶은게 cpp에서 .h , .hpp를 같이 쓰던데 일반적으로 .h파일이 cpp에 호환이 된다고 생각하면 되는 걸까요?? 안재운 2018.12.18 16:50

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)