2013-05-05 16 views
0

在我當前的項目中。我的很多.cpp.h文件都包含很多內容,例如以下列方式聲明的6或7個標題。很多#include語句和頭文件的管理

#ifndef A_Header 
#include "a.h" 
#endif 

#ifndef B_Header 
#include "b.h" 
#endif 

我想知道它將使意義,如果我在一個頭包裹所有這些報頭(在項目中使用),然後宣佈,首部在每個源文件爲這樣

#ifndef Wrapper_Header 
#include "wrapper.h" /*This would contain a collection of all headers*/ 
#endif 

我沒有預料到這個計劃的任何建議和弊端?

+0

它更有道理把那些包括警衛* *裏面的頭,使任何包含他們沒有做額外的工作。 – chris 2013-05-05 03:22:17

+0

不包括廚房水槽,只包括你需要的東西。 C++編譯時間已經很糟糕。 – yngccc 2013-05-05 03:24:50

+0

@chris你如何在頭文件中加入守衛? – Rajeshwar 2013-05-05 03:33:19

回答

2

這完全是離奇的。

每頭應包含頭文件保護

#ifndef THIS_HEADER 
#define THIS_HEADER 

/* contents of the header */ 

#endif 

這正好頭,而不是在包括.cpp文件。編譯器檢測到標題保護並避免在再次包含所有文本時重新讀取它們。這可以節省編譯時間。

如果標題有,那麼在.cpp文件中後衛是多餘的,你應該刪除它們。 6或7個標題不是很多,但那個愚蠢的樣板肯定會加起來。

+0

感謝您解決這個問題。所以從我的理解是,我的頭文件已經有了守衛,並且在將它們添加到我的cpp文件中時,我不需要擔心守衛。 ?我是否理解正確 – Rajeshwar 2013-05-05 03:40:47

+0

@Rajeshwar是的,因爲'#ifndef'和'#endif'行是完全多餘的。 – Potatoswatter 2013-05-05 04:28:17

0

決不包住頭,始終是明確的,說清楚所含內容,不包括你不需要的東西。

0

Potatoswatter是正確的

但我想補充使用「前進宣言」。

我相信你可以google一下。