我最近发布了一个问题,询问哪些动作将构成 _C++ 的禅宗_。我收到了很好的答案,但我无法理解一项建议:
- 使头文件自给自足
你如何确保你的头文件是 _自给自足的_?
欢迎任何其他与 C/C++ 中头文件的设计和实现相关的建议或最佳实践。
编辑:我发现 这个问题 解决了我的“最佳实践”部分。
原文由 Escualo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近发布了一个问题,询问哪些动作将构成 _C++ 的禅宗_。我收到了很好的答案,但我无法理解一项建议:
你如何确保你的头文件是 _自给自足的_?
欢迎任何其他与 C/C++ 中头文件的设计和实现相关的建议或最佳实践。
编辑:我发现 这个问题 解决了我的“最佳实践”部分。
原文由 Escualo 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
自给自足的头文件是一个不依赖于包含它的上下文才能正常工作的头文件。如果您确保在使用之前#include 或定义/声明所有内容,那么您就有了一个自给自足的标题。
非 自给自足标头的示例可能是这样的:
-
在这个例子中, MyClass.h 使用
std::string
没有第一个 #include 。为此,在 MyClass.cpp 中,您需要将 --- 放在#include "MyClass.h"
#include <string>
之前。如果 MyClass 的用户未能执行此操作,他将收到 std::string is not included 错误。
保持你的标题是自给自足的往往会被忽略。例如,您有一个巨大的 MyClass 标头,并向其中添加另一个使用 std::string 的小方法。在当前使用这个类的所有地方,在 MyClass.h 之前已经#included。然后有一天你#include MyClass.h作为第一个标题,突然你在一个你甚至没有接触过的文件中出现了所有这些新错误(MyClass.h)
仔细维护你的标题是自给自足的帮助避免这个问题。