你能把#includes放在C ++标题中吗?

时间:2013-10-13 02:44:05

标签: c++ c header include

是否允许在C ++标题中添加Includes?就像在这个例子中一样。

#ifndef SOMEH_H
#define SOMEH_H

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

3 个答案:

答案 0 :(得分:2)

您当然会在标题中添加#include <something.h>,并且通常会在必要时添加。{/ p>

然而,将任何代码放入标题中是非常糟糕的(就像你一样)。至少,在不同的源文件中包含两次通过标题的函数将导致在链接时重复的函数定义。

答案 1 :(得分:1)

从字面上看,所有#include(从您的角度来看)都是从指定文件中获取文本并将其放在您告诉它的位置。所以是的,你可以将它放在标题中,有时必须。

你甚至可以做类似的事情 vector.txt

huge vector .....

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

答案 2 :(得分:1)

但是,是的 - 任何包含您的标题的人都会在其命名空间中获得大量额外的代码。 更合适的是将函数放在cpp文件中,并且只包含在函数原型所需的头文件中 - 例如,如果您的标题具有类似

的函数
bool is_open(ostream &o);

你必须包括fstream。