클래스 정의할 때 .h? .hpp? 어느 걸 써야하죠?
조회수 12591회
저는 보통 클래스 정의할 때 .h에 했는데요
boost libaray
에서는 다들 .hpp에 클래스를 정의해놓더라구요?
제가 그렇게 써본 적이 없어서 그런지 이상하게 보이던데 .hpp를 쓰면 무슨 장점이라도 있나요?
1 답변
-
C
의 헤더파일은.h
,C++
의 헤더파일은.hpp
로 하시면 됩니다.C
와C++
헤더 이름을 다르게 쓰는 이유는 다음과 같습니다.C
와C++
코드의 포맷을 다르게 쓰는 경우, editor에서 파일 형식에 따라 설정을 달리해 놓으면 editor가 자동으로 포맷을 맞춰줌- libraray가
C
로 구현돼 있고wrapper
가C++
로 구현된 경우, header는 보통 이름이 비슷하기 때문에 파일 확장자로 구분해서 쓸 수 있음.(Feature.h / Feature.hpp) - 프로젝트가
C++
버전에서 더 적절한 기능을 지원하는데 C 버전에서 쓰고 있는 경우, 헤더 이름을 언어(C/C++
)에 따라 다르게 설정하면C
헤더를 찾아내서C++
버전으로 바꾸는 게 쉬움.
C
와C++
은 다른 언어고, 둘을 같이 쓰는 건 위험하기 때문에 권장하지 않는 방법입니다. 따라서 파일 이름을 다르게 지음으로써 어떤 언어가 쓰였는지 구분해 주는 것입니다.
댓글 입력