2011-02-07 1 views
1

컴파일 속도를 높이기 위해 미리 컴파일 된 헤더가 사용되지만 어떤 파일에 포함해야합니까? 해야합니까? 포함하지 말아야 할 파일은입니까? 예를 들어, 나는 부스트 헤더 파일을 stdafx.h (나는 VS2008을 사용하고있다)에 포함 시키도록 많은 boost 라이브러리를 사용하는 프로젝트를 가지고있다. 모든 표준 헤더 파일을 포함시켜야합니까? 예를 들어, <vector>을 포함하지만 실제로는 std::vector을 사용하지 않아도 실행 파일의 크기가 커질까요? 내 자신의 프로젝트의 헤더 파일을 stdafx.h에 포함시키는 것은 나쁜 생각입니까?미리 컴파일 된 헤더 :하지 말까요?

답변

3

미리 컴파일 된 헤더는 실행 파일의 크기에는 영향을 미치지 않고 컴파일 속도에만 영향을줍니다. 미리 컴파일되어 있으므로 항상 다시 컴파일 할 필요가 없습니다. Windows.h는이 기능의 주요 장점입니다.

4

일반적으로 응용 프로그램에서 사용하고 자주 변경되지 않는 모든 헤더 파일은 미리 컴파일 된 헤더 파일로 이동해야합니다. 미리 컴파일 된 헤더 파일이 한 번만 컴파일되므로 컴파일 속도가 빨라집니다.

자주 변경되는 헤더 파일을 추가하면 자주 변경되는 헤더 파일로 인해 전체 프로젝트가 불필요하게 재 컴파일 될 수 있기 때문에 미리 컴파일 된 헤더 파일의 위치를 ​​놓치게됩니다.

특히 템플릿 클래스를 정의하므로 std :: vector를 사용하지 않으면 오버 헤드가 커지지 않습니다. 그러나 헤더 파일을 추가하지 않으려면 표준 파일과 일반 파일을 사용하지 않는 것이 좋습니다. 컴파일 시간, 바이너리 크기에 약간의 오버 헤드가 있으며 나중에 프로젝트에서 충돌을 일으킬 수 있습니다. 그래서 정말로 필요하지 않으면 왜 추가할까요?

0

C++ 표준 헤더 파일과 부스트 라이브러리 헤더 및 자주 사용하는 타사 라이브러리의 다른 헤더를 포함시키는 것이 좋습니다. 이것은 실행 파일의 크기에는 영향을주지 않습니다.

그러나이 헤더를 변경할 때마다 프로젝트 전체를 다시 빌드해야하므로 자신의 프로젝트에서 헤더를 포함하면 안됩니다.