2009-11-14 171 views
1

在我的項目中,幾個STL頭用於不同的文件。我讀過,將所有這些頭文件放入一個頭文件中,並在我的文件中使用該頭文件將允許編譯器預編譯頭文件,這可能會導致編譯時間更快。預編譯標準庫頭文件 - C++

如果我理解正確,我需要像下面這樣寫。

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

現在包括在所有需要訪問STL文件stl.hpp。它是否正確?

很少有我的文件將只使用vector頭文件的功能。但是,如果我遵循上面的方法,它將包含不必要的標題。這會造成什麼問題嗎?如果我包含頭文件並沒有使用任何代碼,是否會生成任何代碼?

任何幫助將是偉大的!

+0

對於在單個頭文件中包含所有頭文件將導致更快編譯時間的說法,我深表懷疑。 – 2009-11-14 18:43:53

+0

'C++模板 - 完整的指南'說,它的確如此。但我不確定。 – 2009-11-14 18:46:19

+2

編制時間非常簡單,只需嘗試查看是否有重大改進。 – 2009-11-14 18:51:12

回答

0

在嘗試加速使用預編譯頭文件進行構建之前,有必要對現有構建進行基準測試/計時,以確定加速是否值得付出努力。

如果您只有#include <string>幾十個文件,您可能看不到任何改進。如果你有1000個文件,那麼它可能是值得的。

請參閱這篇文章更優異的信息:www.cygnus-software.com

1

基本上每一個體面的編譯器使用precompiled headers。已經編譯的頭文件將被緩存爲只有在它們被更改時纔會重新編譯

使用已編譯的頭文件,而不是每次重新編譯它們都會加快編譯時間。

但是,無論將常用的標題組合在一個單獨的文件中,還是將它們單獨包含在每個源文件中,在編譯速度方面都無關緊要。