2014-01-31 11 views
2

我在許多源代碼託管站點中看到了一些C++項目(這些項目相當大但很少),並且看到一些源文件和標題不包含任何必需項頭文件(作爲程序員的類)或標準的(向量,字符串),(甚至完美編譯)。一些C++源代碼在項目中無需標題就可以完美編譯

其中一個項目是Ogitor(一個Ogre場景編輯器),我看到他們的源代碼並且沒有包含一些重要的頭文件,我只看到類定義和很少的前向類聲明,我沒有做任何改變並且完美地編譯!我想要得到一個關於如何C/C++開發人員實現這一目標的方法,我不想弄亂很多#include指令,也給我提供了不完整的類定義錯誤,我聽說過一些「預編譯標題「有這樣的事情。

+2

一般,這是因爲_does_包括已經包含了一個標題它它不包括的那個。 – refi64

回答

1

預編譯頭文件的目的是通過預編譯來加快編譯時間。他們可能,但不必包含其他標題,並且當他們這樣做時,則可以跳過它們包含在包含預編譯頭文件的文件中。

你沒有看到每個使用它們的文件中包含的所有重要標題的原因是因爲它們是通過其他標題間接包含的。無論是否使用預編譯頭文件,都無法在編譯單元中創建頭文件。

實施例:

那麼header1.h

#include <vector> 
#include <string>  

header2.h

#include "header1.h" 
#include <array> 

header3.h

#include "header2.h" 

std::vector<std::string> from_header1; 
std::array<int> from_header2; 
+0

嗯,我認爲這是很有說服力,也是最合乎邏輯的,反正我希望在編譯期間不會出現「重複的變量和名稱」錯誤。謝謝。 –

相關問題