2009-11-14 2 views
1

내 프로젝트에서 여러 STL 헤더가 다른 파일에서 사용됩니다. 나는이 모든 헤더를 하나의 헤더에 넣고 그 헤더를 내 파일에 사용하면 컴파일러가 헤더를 미리 컴파일하여 컴파일 시간을 단축 할 수 있다고 읽었습니다.표준 라이브러리 헤더 파일 미리 컴파일 - C++

정확하게 이해한다면 다음과 같이 작성해야합니다.

// stl.hpp 
#include <string> 
#include <algorithm> 
#include <vector> 

이제 STL에 액세스해야하는 모든 파일에 stl.hpp을 포함하십시오. 이 올바른지?

내 파일의 일부는 vector 헤더 파일의 기능 만 사용합니다. 그러나 위의 방법을 따르면 불필요한 헤더가 포함됩니다. 이것은 어떤 문제를 일으킬 것입니까? 헤더 파일을 포함하고 아무것도 사용하지 않으면 생성 된 코드가 있습니까?

도움이 될 것입니다.

+0

단일 헤더 파일에 모든 헤더 파일을 포함하면 컴파일 시간이 단축된다는 주장에 대해 매우 회의적입니다. –

+0

'C++ Templates - 완전한 가이드 '는 말한다. 나는 확실하지 않다. –

+2

컴파일 작업을 꽤 쉽게 할 수 있습니다. 상당한 개선이 있는지 확인해보십시오. –

답변

0

미리 컴파일 된 헤더를 사용하여 빌드 속도를 높이기 전에 기존 빌드를 벤치마킹/타이밍 테스트하여 테스트 속도가 향상되는지 알아볼 가치가 있습니다.

#include <string>과 함께 수십 개의 파일 만있는 경우 개선되지 않을 수 있습니다. 당신은 1000s의 파일을 가지고 있다면, 그만한 가치가있을 것입니다. www.cygnus-software.com

1

은 기본적으로 모든 괜찮은 컴파일러는 precompiled headers를 사용

더 우수한 정보를 원하시면이 문서를 참조하십시오. 이미 컴파일 된 헤더는 으로 캐시되고 은 변경된 경우에만 다시 컴파일됩니다 ().

매번 컴파일 할 때마다 컴파일 된 헤더를 사용하면 컴파일 시간이 빨라집니다.

자주 사용하는 헤더를 단일 파일로 결합하거나 각 소스 파일에 별도로 포함할지 여부는 컴파일 속도 측면에서 중요하지 않습니다.