我想知道在包含头文件时应该遵循什么标准。如果这些地方使用此类头文件,那么在相关地方重新包含头文件是否是一种好习惯? 例如,
假设您有一个包含 iostream 和自定义类“myclass.h”的 main.cpp 类,因为您在 main 中同时使用了 std::ostream 和 myclass 的一个实例。
现在,在您的“myclass.h”中您还包含了 iostream,因为在您的类中您使用了 std::ostream。
如果您现在回头看,main 在技术上包含了 iostream 两次,因为它本身包含了它,而且它还包含在“myclass”(main 包含)中。 我可以想出一个好的理由和一个坏的理由,我想知道哪种方法才是正确的做法。
- 保留两个包含项并让包含项守卫完成他们的工作。如果您更改“myclass”中的实现并删除 iostream 包含,您的 main 将不会中断,因为它明确包含 iostream。
- 只保留“myclass”中的 include 并将其从 main 中删除,以包含单个 iostream include(并缩短编译时间?),修复在更改“myclass”中的实现时出现的任何错误,以及删除出现的 iostream 包含。
我更倾向于第一种解决方案,但我还是不太了解 C++ 标准。 谢谢, -弗朗西斯科
最佳答案
将 include 保留在两个文件中,让 include guards 完成他们的工作。
如果您依赖于“间接”包含,如果您稍后更改“myclass.h”并想知道为什么您的 std::ostream 在 main.cpp 中不再工作,那么错误可能会很痛苦。也可能会让其他人感到困惑
关于C++ 包含结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636393/