c++ - 解决 C、C++ 中隐式包含的想法

标签 c++ c

我刚刚想出了一个解决问题的想法并想分享它。对不起,如果太平庸。

因此,我正在审查的一个大型 C++ 项目包含许多依赖于其他包含的符号但不包含所需包含的包含。构建过程中的任何细微变化都会导致“缺少符号”失败。

因此,为了立即检查所有包含的自包含,我搜索所有 *.h,即时创建一个 cpp 文件,其中仅包含带有此 .h 文件的 #include -statement 并尝试编译它.最后,我获得了“好”和“坏”包含文件的列表。 很酷是不是 :-) 或者有更简单的解决方案吗?

最佳答案

如果每个 .cpp 文件首先包含它自己的头文件,然后是其他头文件,您将在不使用外部工具的情况下获得此检查。

这实际上是Googles C++ Style Guide的一部分出于同样的原因:

The preferred ordering reduces hidden dependencies. We want every header file to be compilable on its own. The easiest way to achieve this is to make sure that every one of them is the first .h file #included in some .cc.

如果您有任何头文件没有相应的 .cpp 文件,您必须为它们做一些特殊的事情。

关于c++ - 解决 C、C++ 中隐式包含的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4224490/

相关文章:

c - C 中的 UDP 套接字 : client1 to server to client2

c - Sizeof(Struct sem_t) 得到错误 : invalid application of ‘sizeof’ to incomplete type ‘struct sem_t’

c++ - 如何检查指针后面的对象是否有效或已被删除?

c++ - npm 安装 : fatal error C1083 on bson and kerberos compilation 上的 node-gyp 错误

c++ - 没有指针时如何修复 'Segmentation Error'?

c - glibc 源中的系统调用在哪里

c - 在循环内声明时数组基地址正在更改

c - 将二维字符数组放入结构中,不知道从哪里开始

c++ - Constexpr 构造和静态成员不起作用

python - 将 pybind11 绑定(bind)标记为已弃用的最佳方法