我们的产品使用C ++作为编程语言。使用C ++ STL的一个令人烦恼的问题是我们忘记包含必要的头文件,因为该文件可能已包含在其他一些STL头中,构建通过。例如,
在使用Xcode的Mac平台中,如果我使用std::auto_ptr
而不包含memory.h
但包含iostream.h
,则构建将通过,但在Android平台中会失败。
但是我不希望将代码移动到Android以进行每次代码更改提交的构建检查。那么,无论如何都要避免这个问题吗?
编辑1: 我知道最好的解决方案是不要忘记包含标题。但是开发人员会犯错误。那么有什么工具可以帮助检查吗?
编辑2: 接缝不是理想的解决方案,所以我将使用vim脚本在我的编辑器中检查它,解决方案类似于https://github.com/vim-scripts/vim-cpp-auto-include/blob/master/ftplugin/cpp_auto_include.vim
答案 0 :(得分:1)
您可以使用包含所有必要文件的common_includes.h
文件,并将该文件包含在您需要的任何位置。这将简化情况,并有助于忘记包含一些文件。至少你会忘记它一次:)。
答案 1 :(得分:0)
我所知道的唯一工具是编译器本身。
每当问题是可移植性时,我看到的最佳解决方案是简单地为所有必需的环境设置自动构建/测试套件。然后,每当提出拉取请求时,它将在您的所有构建机器人上进行验证,如果您忘记了某些内容,您将收到警告。