2017-10-24 6 views
1

저는 gcc 5.3.1을 사용하여 C++ 프로젝트에 대해 미리 컴파일 된 헤더를 사용하고 있습니다.헤더 및 STL 라이브러리 사전 컴파일

미리 컴파일 된 헤더 내에 표준 라이브러리 헤더가 많이 포함되었습니다.

... 
#include <vector> 
#include <map> 
#include <set> 
#include <unordered_map> 
... 

그러나 주로 템플릿이기 때문에 미리 컴파일 된 헤더에서 사용하는 모든 유형에 대해 템플릿을 지정해야합니까?

예 : 사용 된 템플릿이 미리 컴파일 된 헤더 생성 시간

에서 알려진 이런 식으로

void touchStdVectorFloat(const std::vector<float> & vec) {} 
void touchStdVectorInt(const std::vector<int> & vec) {} 
... 

는 유용하거나 쓸모인가?

+0

몇 마디를 확인하고 싶을 수 있습니다. STL은 1998 년 이전에는 C++에서 사용되었지만 C에서는 사용되지 않았습니다. 그리고 ''; ''은 C++ 표준 라이브러리 (T 없음)의 것입니다. ''도 STL에서 나오지 않았습니다. – MSalters

+0

감사합니다. 내 게시물을 수정했습니다. – flod

답변

1

사전 컴파일 된 헤더는 일반 헤더 포함을 대신 할뿐입니다. 템플릿 또는 템플릿이 포함되어 있어도 상관 없으며 컴파일 모델이 변경되지 않습니다. 템플릿을 인스턴스화하는 모든 코드 조각에는 여전히 범위의 템플릿 정의가 필요합니다.