2014-03-31 41 views
1

我有一個頭文件,其中包括本身的幾個外部頭像只要擁有自給自足的頭和預編譯頭

#include <boost\shared_ptr.hpp> 

我想保持頭部自給自足,還可以添加外部包括在指令預編譯頭文件(我正在使用經典的stdafx.h設置)來加快編譯速度。在這種情況下是否刪除了冗餘包含指令或至少處理了更快的指令?

+1

真的沒關係,它是預編譯的。 –

+0

@HansPassant確實是愚蠢的。咖啡前問題。 – UmNyobe

回答

0

使用預編譯頭不會加速冗餘包含的處理。如果多餘的包含文件包含標題保護(或#pragma一次),它們將被處理得更快。

0

如果要避免在每個cpp文件中添加#include,則可以使用項目屬性:配置屬性 - > C/C++ - >高級 - >強制包含文件選項。這會自動將指定的包含添加到項目中的每個cpp文件中。

但是,如果您仍然有一個或多個包含大標題的cpp文件,或者甚至有一個標題本身具有包含其他大標題的長列表,那麼包含該標題的cpp文件無論您使用預編譯頭還是不行。一個解決方案,就是這種/這些長頭添加到您的stdafx.h

而且,每頭應該有警衛使用經典的便攜式

#ifndef _MyHeader_H_ 
#define _MyHeader_H_ 
... header code here 
#endif 

或微軟專用的,以防止冗餘處理

#pragma once 

當頭文件包含其他頭文件(這些頭文件可能包含已包含的頭文件)時具有警衛功能,可防止多重包含錯誤並加快預處理時間。

希望這會有所幫助。