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_H
Enforcement(实施建议)
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设计模式》是作者最近出版的新书 , 拜托多多关注!
文章插图
本书利用Python 的标准GUI 工具包tkinter , 通过可执行的示例对23 个设计模式逐个进行说明 。 这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明 , 让读者明白在编写代码时如何判断使用设计模式的利弊 , 并合理运用设计模式 。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础 , 迅速构建自己的系统架构 。
觉得本文有帮助?请分享给更多人 。
关注微信公众号【面向对象思考】轻松学习每一天!
面向对象开发 , 面向对象思考!
- 内存大厂跨界之作!芝奇Enki 360一体式水冷评测:高密度冷排稳压18核心
- Intel DG2游戏独立显卡偷跑:仅仅4096个核心
- 高下立现!关于核心技术的态度,柳传志和任正非截然不同
- AMD Zen 3锐龙5000系列APU核心结构图曝光 较上一代更加强大
- 苹果自研新处理器曝光:64核心
- 全国劳模郜春海:核心技术买不来,只有自主创新才能不再受制于人
- 做核心技术是找死?任正非早已预料,而联想柳传志却始料未及
- 恐怖 苹果或许正在设计64核心ARM芯片
- 为什么我喜欢C语言,却非常讨厌C++?一位国外程序员的回答
- AMD Zen3线程撕裂者曝料:16核心回归、名字凌乱