c++ - 在 .cpp 标准中包含文件

标签 c++ build include

请在下面找到一个简单的例子。 我知道 .hpp 文件必须包含或转发声明它使用的所有内容 我想知道将 .cpp 文件中使用的所有 .hpp 文件也包括在内是否是最佳做法。 我问这个是因为我最近看到我正在从事的一个新项目,在很多情况下人们倾向于避免包含标题。

在这种情况下:将 b.hpp 包含在 a.cpp 中是否合适? 我知道它已经通过include a.hpp被包含了,但是我个人觉得如果一个符号出现在一个.cpp中,它应该被包含(或者如果可能的话前向声明)

a.hpp

#pragma once
#include "b.hpp"

class C; //forward declaration of C

class A
{
public:
    B get_b();
private:
    B  _b;
    C* _c;
};

a.cpp

#include "a.hpp"
//needed or I can leave it out, since B is included already in a.hpp?
#include "b.hpp"

B A::get_b()
{
    return _b;
}

最佳答案

尽量将 #include 移动到 .cpp 文件中。它减少了编译时间并避免在整个项目中传播声明。所以,如果您可以在 .cpp 文件中包含 b.hpp

一旦在头文件中包含了b.hpp,就不需要在.cpp文件中包含它了。 由于 header 保护(如果您放置了它们),将其再次包含在 .cpp 文件中无效。

关于c++ - 在 .cpp 标准中包含文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988113/

相关文章:

c++ - 如何为 OpenCV 多核图像处理创建 TBB 任务调度程序? C++

python - 在 Makefile 的内置 shell 函数中使用 make 变量

python - 如何使用 Bazel 的 py_library 导入参数

android - 在Jquery Mobile中的一个页面中包含几个页面

javascript - 在 Chrome 扩展内容脚本中包含 Javascript 文件

c++ - 如何在 Veins 4.4 中正确使用 "moduleDisplayString"?

c++ - 如何将addr_in结构分配给uint8_t数组

C++ Pimpl 习惯用法、类模板和 void 模板参数

java - 如何在 Eclipse 中从命令行打开并运行特定脚本

include - 用于检测 D 源中包含内容的 Vim 设置