2014-04-14 110 views
0

我和我的團隊正在研究一個非常大的項目,其中包含許多具有各自頭文件和源文件的類。我們試圖將所有包含C++庫和項目類頭文件的內容合併到一個名爲「Includes.h」的文件中,該文件包含在每個頭文件中。我在做這件事時遇到的一個問題是類頭文件基本上包含它們自己。我在每個頭文件的頂部都包含了#pragma once。當我在「#Includes.h」文件中註釋掉#include "Controller.h"時,「Controller.h」的錯誤消失。包含問題和包括警衛

+0

在網上搜索「C++ include guards」。編譯器中'#pragma once'不可移植。 –

回答

3

請請請漂亮請不要這樣做。

優先轉發聲明。然後是單個包含文件。

否則,你改變一個包含文件,它必須編譯很多。即浪費時間。

Bascially得到每個頭文件能夠用空白的cpp文件進行編譯。最小的依賴。

+0

那麼最好只在每個頭文件中直接包含其他頭文件?有沒有一種方法可以將它們全部包含在內,只需從Include.h中排除包含文件的文件?幾乎所有的頭文件都包含頭文件的其餘部分。 – joekleespies

+0

@ user3516792 - 頭文件應該只使用前向聲明。當你不使用它們時,爲什麼要包含它們? –

+1

@ user3516792:請不要使用猛獁包含文件。它爲您的構建系統解決了文件依賴關係。如果更改了一個頭文件,則必須構建所有文件,包括那些不使用更改的頭文件的文件。因此,不是編譯200個文件中的一個文件,編譯系統將編譯全部200個。 –