繁体   English   中英

头文件并包含最佳实践

[英]Header files and include best practice

我有一个关于头文件,包含语句和良好编码风格的快速问题。 假设我有2个类,包含相关的源文件和头文件,然后是main()所在的最终源文件。

在Foo.hpp中,我有以下声明:

#include <string>
#include <iostream>
#include <exception>

现在有了Bar.hpp我有以下声明:

#include "Foo.hpp"
#include <string>

最后使用Myprogram.cpp我有以下声明:

#include "Bar.hpp"
#include <string>
#include <iostream>
#include <exception>

我知道Myprogram.cpp中的<>中的include语句和Bar.hpp对于程序编译和运行不是必需的,但是最好的做法或正确的做法是什么? 有没有理由不在每个文件中明确包含必要的头文件?

应该在每个需要它们的文件中包含所有必需的文件。 如果MyProgram.cpp需要string ,请包含它,而不是依赖于Bar.hpp包含它。 从现在Bar.hpp 2周后无法保证Bar.hpp仍会包含它,然后您将面临编译器错误。

注意必要的 - 即确保你真的需要一个包含,当一个前向声明或甚至完全放弃它时。

另请注意,某些系统标头可能包含其他标头 - 除少数例外情况外,没有要求。 因此,如果您需要<iostream><string>包括两者,即使您只能使用其中一个进行编译。

包含出现的顺序(系统包括vs用户包括)取决于您遵循的编码标准 - 一致性比选择本身更重要。

在每个文件中包含您需要的所有内容, 但不包括任何您不需要的文件 通常,它是包含文件的工作,以确保它不包括两次,使用预编译器标志等...

例如,如果是需要Foo.cpp ,而不是由Foo.h ,包括在Foo.cpp没有Foo.h 如果两者都需要,请包括两者。

切向地,作为最佳实践,永远不要在头文件中using指令。 如果需要,可以在实现文件(.cpp)中使用using指令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM