g++:如果文件中不包含头文件,有没有办法发出警告?

问题描述 投票:0回答:2

有没有办法用

g++
编译源代码,并且如果我没有将文件包含在我应该包含的另一个文件中,让编译器警告我?

例如,在大型项目中,通常很容易在

fileA
中编写一些代码,它使用
fileC
中的另一个函数(包含函数声明),但忘记添加 include 语句。如果
fileA
还包含另一个文件
fileB
,则可以隐藏此类错误,其中
fileB
包含
fileC

这将编译没有错误,但是如果稍后修改代码,并且我们从

#include fileB.hpp
中删除
fileA
,那么编译将失败,因为我们最初在几个月前忘记包含
fileC

是否有一个编译器开关会警告我们这个问题?同样,是否有反向开关,当我们

#include
做一些不必要的事情时,它会警告我们?

c++ g++ include compiler-warnings
2个回答
3
投票

不完全回答问题,但使用前向声明并尽量减少标头中的包含可能有助于避免此类问题。

如果您仅在 hpp 文件中使用前向声明,它们将彼此独立,并且您将被迫将特定的 .hpp 文件包含到正在编译的每个 .cpp 单元中。


2
投票

我不相信有这样的选择,因为实际上来说它很难实施。编译器如何知道不包含哪个头文件(考虑这样一种情况,一个标头中有一个免费模板函数,而另一个标头中有一个专门化)。

但是不用担心,实际上这没什么大不了的。如果你从不删除

fileB
的包含,你的代码将继续编译得很好,如果你 do 删除它,你会立即得到一个方便的错误,准确地告诉你缺少哪个标识符,使你能够包含那时你自己就可以找到正确的标题!

© www.soinside.com 2019 - 2024. All rights reserved.