헤더 전용
Header-onlyC 또는 C++ 프로그래밍 언어의 맥락에서 라이브러리를 구성하는 모든 매크로, 함수 및 클래스의 전체 정의를 헤더 파일 형식으로 컴파일러에 볼 수 있는 경우에만 라이브러리를 헤더 전용이라고 한다.[1]헤더 전용 라이브러리는 사용하기 위해 별도로 컴파일, 패키지화, 설치할 필요가 없다.컴파일러를 헤더 위치를 가리킨 다음#응용프로그램 소스에 헤더파일을 넣는다.또 다른 장점은 컴파일러의 최적기가 도서관의 소스 코드를 모두 사용할 수 있을 때 훨씬 더 잘 할 수 있다는 것이다.
단점은 다음과 같다.
- 밋밋함 – 라이브러리에 대한 대부분의 변경은 해당 라이브러리를 사용한 모든 컴파일 단위의 재컴파일 필요
- 더 긴 컴파일 시간 – 컴파일 유닛은 단순히 인터페이스가 아닌 포함된 파일의 모든 구성요소의 구현을 확인해야 한다.
- 기계 코드 팽창(논의할 수 있음) – 비 클래스 기능에 인라인 문을 필요한 경우 오버인라이닝으로 코드 팽창을 초래할 수 있다.
그럼에도 불구하고, 머리글 전용 형태는 인기 있는 이유는 그것이 (때로는 훨씬 더 심각한) 포장 문제를 피하기 때문이다.
C++ 템플릿의 경우, 컴파일러가 인스턴스화를 위해 템플릿의 전체 정의를 알아야 하기 때문에 헤더에 정의를 포함하는 것이 컴파일할 수 있는 유일한 방법이다.
참조
- ^ Wilson, Matthew (2004). Imperfect C++. Addison-Wesley. p. 177. ISBN 0-321-22877-4.