g++:有没有办法警告头文件是否不包含在文件中
g++: Is there a way to warn if header file is not included in file?
有没有办法用g++
编译源代码,如果我没有在另一个文件中包含文件,编译器会警告我应该有的文件?
例如,在一个大型项目中,通常很容易用 fileA
编写一些代码,它使用 fileC
中的另一个函数(包含函数声明(,但忘记添加 include 语句。如果fileA
还包括另一个文件,则可以隐藏此类错误,fileB
,其中fileB
包含fileC
。
这将编译而不会出错,但是如果以后修改代码,并且我们从fileA
中删除了#include fileB.hpp
,那么编译将失败,因为我们最初忘记包含fileC
几个月前!
是否有编译器开关可以警告我们此问题?同样,是否有反向开关,当我们#include
不必要的事情时会警告我们?
不能完全回答这个问题,但是使用前向声明并将标头中的包含保持在最低限度可能有助于避免此类问题。
如果只在 hpp 文件中使用前向声明,它们将彼此独立,并且您将被迫将特定的 .hpp 文件包含在正在编译的每个.cpp单元中。
我不相信有这样的选择,因为实际上很难实现。编译器应该如何知道哪个头文件不包含(考虑一个头中有一个免费模板函数,而在另一个头中有一个专用化的情况(。
但不要害怕,实际上这没什么大不了的。如果您从未删除包含fileB
您的代码将继续编译,如果您确实删除了它,您将立即收到一个方便的错误,告诉您确切地缺少哪个标识符,使您能够自己在那个时候包含正确的标头!
相关文章:
- 在C++中使用没有合作伙伴Class/Cpp文件的头文件是否实用
- 在头文件上包含 cpp 文件是否有缺点?
- 如何检查文件是否已存在于 fstream C++中
- 预处理的 C/C++ 文件是否特定于计算机?
- 如何使用 jpeglib.h 获取文件是否为 JPEG 类型
- 如何在 Linux 下使用 c++ 知道文件是否被其他进程使用?
- 使用 g++ 编译时列出所有 cpp/cc 文件是否正常?
- 如何检查文件是否复制成功?(便携式解决方案)C++
- 如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
- 如何检查每个头文件是否包含必需的包含文件?
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?
- 使用 CodeBlocks + GCC 构建的可执行文件是否可以在任何 Windows 上运行?
- 如何检查给定文件是否是C++中的有效视频文件?
- 关于使用ifstream在C 中确定文件是否存在的问题
- #include 包含的头文件已包含的头文件是否常见?
- 如何测试文件是否被锁定和/或只读而不打开?
- 检查文件是否具有Windows c ++的可执行权限
- 检查给定的多个文件是否存在
- .txt文件是否已关闭
- 如果给定正确的运行时库,x86 可执行文件是否可以在任何 x86 平台上运行