你能把 #includes 放在C++标题中吗?
Can you put #includes in C++ headers?
是否允许在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。
相关文章:
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 对于C++,方括号中的标题必须总是在引号中的标题之上吗
- 库标题在标题中不可见,但在 cmake build 下.cpp文件中完全可见.为什么?
- 为什么我不应该把所有东西都放在标题中?
- WinAPI 检查窗口是否具有常规标题栏
- 如何更改窗体上所有控件的标题?[C++生成器]
- 提升用于解析标题列的精神语法
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 使用类 ?C++ 和 SFML 以及标题中的 15 个字符
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 我将如何在 cpp 中生成一个随机且独特的标题
- std::带有颜色和标题的 clog 包装器无法正确打印整数
- 仅提升计时标题与链接
- 是否有理由在标题中保留完全专用的模板?
- 如何在QGroundControl的标题中放置空格?
- 崇高的林特与叮当在标题中找不到头文件
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 无法在 GLFW 窗口标题中显示'ä'
- 只要我不包含一个标题,重新定义C++关键字合法吗