2013-10-13 62 views
2

是否允許添加包括C++頭文件?就像這個例子。你可以把#includes放在C++頭文件中嗎?

#ifndef SOMEH_H 
#define SOMEH_H 

#include <fstream> 
int funcofsomekind(){ 
    ofstream myfile; 
    myfile.open ("Stackoverflow.stack"); 
    myfile << "wolololol"; 
    myfile.close(); 
} 
#endif 
+3

這對很多頭相當必要的,即使他們沒有定義的功能。 – chris

回答

2

你肯定在你的頭添加#include <something.h>,而且往往是在必要時進行。

然而,它被認爲是非常糟糕的主意,把標題中的任何代碼(像你這樣)。至少在不同的源文件中包含通過頭兩次的函數會導致鏈接時重複的函數定義。

+0

這是比「非常糟糕的主意」更復雜一點把源內聯頭。內聯方法,模板等? –

1

從字面上看所有的#include做(從您的角度來看)是採取從指定的文件中的文本,並把它的權利在你告訴它的地方。所以是的,你可以把它放在一個標題,有時不得不。

你甚至可以做這樣的事情
vector.txt

huge vector .....

std::vector<int> v { 
#include vector.txt 
} 
1

是的,但是 - 人誰都會包括你的頭會得到很多額外的代碼放到自己的命名空間。 什麼是比較合適的是把功能於一身的cpp文件,並且只包括在其中所需要的函數原型的頭 - 例如,如果你的頭有一個像

bool is_open(ostream &o); 

你將有一個功能包括fstream。

+0

其實,就足夠了。 –

+0

好點:),因爲它包含較少的東​​西放到命名空間會更好。 –

相關問題