相关疑难解决方法(0)

C/C++包括头文件顺序

应该指定哪些顺序包含文件,即将一个标题包含在另一个标题之前的原因是什么?

例如,系统文件,STL和Boost是在本地包含文件之前还是之后运行?

c c++

265
推荐指数
8
解决办法
10万
查看次数

如何检查每个头文件是否包含所需的包含文件?

我正在使用 C++ 和 cmake 开发我的应用程序。

我想检查每个 C++ 头文件是否正确包含所需的包含文件。

下面是一个例子:

一个.hpp

inline void func_a() {
}
Run Code Online (Sandbox Code Playgroud)

b.hpp

// #include "a.hpp" is missing
inline void func_b() {
    func_a();
}
Run Code Online (Sandbox Code Playgroud)

主程序

#include "a.hpp"
#include "b.hpp"

int main() {}
Run Code Online (Sandbox Code Playgroud)

演示:https : //wandbox.org/permlink/kZqoNHMYARIB3bc1

b.hpp 应该包括 a.hpp。假设 b.hpp 缺少包括 a.hpp。如果 main.cpp 在 b.hpp 之前包含 a.hpp,则不会发生编译错误。如果包含顺序相反,则会发生编译错误。

我想检查一下这种问题。

我在 emacs 上使用 fly-check。它很好地检查了这个问题。我想在我的 cmake 构建系统中加入一些检查机制。

例如,如果我执行make depcheck,则检测到编译错误。

我认为如果我设置一个单独编译所有头文件但不链接的 cmake 目标,则会报告预期的编译错误。

到目前为止,我找不到如何设置它。

有没有办法做到这一点?或者其他方式来实现目标?

我的头文件包含策略

每个头文件都应该包含包含所需元素的头文件。换句话说,每个头文件都应该单独编译。

我想要达到的目标

我想知道通过工具辅助自动检测 b.hpp 缺少`#include "a.hpp" 的方法。该工具意味着不是编辑器。我猜 cmake 可以做到这一点。我正在努力寻找方法。

c++ dependencies cmake include

5
推荐指数
1
解决办法
661
查看次数

标签 统计

c++ ×2

c ×1

cmake ×1

dependencies ×1

include ×1