본문 바로가기

필사적 필사

여러가지 확장자에 관하여

오픈 소스 라이브러리를 사용하여 개발을 하거나 CMake를 이용해서 프로젝트를 빌드하거나 할 때면

다음과 같은 파일 확장자들을 볼 수 있다.

.c / .h /.cc / .cpp / .c++ / .cxx / .hpp / .hxx / .h++

.h / .hpp / hxx / h++

- 헤더파일, 선언파일(.cpp, .cxx등)에 대한 최소한의 정보를 가지는 파일

- hpp등은 templat, inline 함수 등 정의부분까지 일부헤더에 포함된 파일.

.c / .cpp / .cc / c++ / cxx

- 정의문, c에서는 .c파일, c++에서는 .cpp파일

 

.hpp 또는 .hxx 확장자는 왜 굳이 사용할까? 일반적으로도 c++에서도 헤더파일의 확장자 이름은  c에서처럼 .h를 사용한다. 

다만, c++문법중에서는 정의와 선언을 분리하기 어려운 상황들이 몇 가지 있다.

그 중 한 가지가 바로 템플릿(template)을 구현할 때이다.

템플릿의 타입이 컴파일 시간에 지정되므로 헤더파일에 정의가 구현되어야 한다. 그래서 이런 경우에는 특별히 c++문법을 썼음을 

정확히 명시하기 위해 .hpp .hxx등의 확장자를 사용하는 것이다. 템플릿 정의의 경우 .txx, .tpp, .tpl이라고 표시하기도 한다.

인라인 함수 정의에는 .ii, .ixx, .ipp, inl을 사용하기도 한다.

그럼, 하나의 파일에서 모든 걸 처리할 수 있는데, 이처럼 파일을 분할하여 사용하는 이유는 무엇일까?

객체지향프로그래밍에서는 기본적으로 SW개발 방법론의 기본이 선언과 정의, 인터페이스와 구현을 분리하는것이다.

이는 코드관리가 용이하고 유지보수가 쉽고, 가독성 또한 높아진다.

http://holograming.blogspot.com/2017/01/cxx-hpp-h-h-hxx.html

'필사적 필사' 카테고리의 다른 글

.net framework란 무엇일까?  (0) 2019.12.31
DEBUG와 RELEASE 컴파일의 차이  (0) 2019.12.11
python-ArgumentParser  (0) 2019.12.03
opencv-python에서 특정 프레임 불러오기  (0) 2019.11.12
Entry point  (0) 2019.11.01