본문 바로가기
Study Archives

[C++] Header-only Library

by 2den 2022. 3. 31.
728x90

Header-only Library

라이브러리를 구성하는 매크로, 함수, 클래스 등이 모두 헤더 파일 안에서 정의되어 컴파일러에게 보여지는 라이브러리

Header-only Library의 장점

추상화(구현의 구체적인 사항을 사용자에게로부터 숨김)하여 헤더파일+라이브러리(.dll, .lib, .dylib 등)의 구성으로 배포하는 일반 라이브러리와 달리, 운영체제별 컴파일 또는 복잡한 경로설정이 필요 없다. 빌드할 필요 없이 파일을 코드에 포함시키기만 하면 된다. 따라서 멀티플랫폼 지원이 가능하다. + 라이브러리가 템플릿 코드인 경우 header-only 형태로 구현/배포하는 것이 필수적이다.

Header-only Library의 단점

- 라이브러리를 수정할 경우 해당 라이브러리를 사용하는 모든 컴파일 단위(compilation unit)를 다시 컴파일 해야 한다.
- 라이브러리의 컴파일 단위를 컴파일 할 때 인터페이스만이 아닌 파일의 모든 구성요소를 체크해야 하기 때문에 컴파일 시간이 길어진다.
- 클래스가 아닌 함수에서 인라인(inline) statement를 사용하다 보면 over-inlining으로 인해 code bloat이 발생할 수 있다.

* code bloat : 불필요하게 길거나 느린, 또는 자원을 낭비하는 소스 코드 또는 기계 코드를 생성하는 것

728x90

댓글