是否允许在 C++ 标头中添加包含?就像在这个例子中一样。
#ifndef SOMEH_H
#define SOMEH_H
#include <fstream>
int funcofsomekind(){
ofstream myfile;
myfile.open ("Stackoverflow.stack");
myfile << "wolololol";
myfile.close();
}
#endif
您当然会#include <something.h>
在标题中添加,并且如果需要,通常会这样做。
但是,将任何代码放在标头中(就像您所做的那样)被认为是非常糟糕的主意。至少,通过头文件在不同的源文件中包含两次函数会导致在链接时重复的函数定义。
从字面上#include
看(从您的角度来看),所有操作都是从指定文件中获取文本并将其放在您告诉它的位置。所以是的,您可以将其放在标题中,有时必须这样做。
你甚至可以做类似的事情
vector.txt
huge vector .....
std::vector<int> v {
#include vector.txt
}
是的,但是 - 任何将包含您的标头的人都会在他的命名空间中获得很多额外的代码。更合适的是将函数放在 cpp 文件中,并且仅包含在函数原型所需的头文件中 - 例如,如果您的头文件具有类似的函数
bool is_open(ostream &o);
您必须包括 fstream。