C++核心准则?SF.8:为所有的.h文件使用包含监护


C++核心准则?SF.8:为所有的.h文件使用包含监护文章插图
SF.8: Use #include guards for all .h filesSF.8:为所有的.h文件使用包含监护Reason(原因)
To avoid files being #included several times.
为了避免文件被多次包含 。
In order to avoid include guard collisions, do not just name the guard after the filename. Be sure to also include a key and good differentiator, such as the name of library or component the header file is part of.
为了避免包含监护发生冲突 , 不要只用文件名作为监护 。 保证同时包含一个键值和良好的区分信息 , 例如库名或者头文件所属的部件名 。
Example(示例)
// file foobar.h:#ifndef LIBRARY_FOOBAR_H#define LIBRARY_FOOBAR_H// ... declarations ...#endif // LIBRARY_FOOBAR_HEnforcement(实施建议)
Flag .h files without #include guards.
【C++核心准则?SF.8:为所有的.h文件使用包含监护】标记所有没有包含监护的头文件 。
Note(注意)
Some implementations offer vendor extensions like #pragma once as alternative to include guards. It is not standard and it is not portable. It injects the hosting machine's filesystem semantics into your program, in addition to locking you down to a vendor. Our recommendation is to write in ISO C++: See rule P.2.
作为包含监护的代替手段 , 有些C++实现提供某些厂家扩展 , 例如#pragmaonce 。 这不是标准做法而且不可移植 。 它向你的程序注入了宿主机器的文件系统语义 , 另外将你锁定到这个厂家 。 我们的建议被写入了ISO C++中 。 参见规则P.2 。
原文链接
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#sf8-use-include-guards-for-all-h-files
新书介绍
《实战Python设计模式》是作者最近出版的新书 , 拜托多多关注!
C++核心准则?SF.8:为所有的.h文件使用包含监护文章插图
本书利用Python 的标准GUI 工具包tkinter , 通过可执行的示例对23 个设计模式逐个进行说明 。 这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明 , 让读者明白在编写代码时如何判断使用设计模式的利弊 , 并合理运用设计模式 。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础 , 迅速构建自己的系统架构 。
觉得本文有帮助?请分享给更多人 。
关注微信公众号【面向对象思考】轻松学习每一天!
面向对象开发 , 面向对象思考!