前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则​SF.8:为所有的.h文件使用包含监护​

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

作者头像
面向对象思考
发布2020-10-19 10:14:38
4590
发布2020-10-19 10:14:38
举报
文章被收录于专栏:C++核心准则原文翻译

SF.8: Use #include guards for all .h files

SF.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(示例)

代码语言:javascript
复制
// file foobar.h:
#ifndef LIBRARY_FOOBAR_H
#define LIBRARY_FOOBAR_H
// ... declarations ...
#endif // LIBRARY_FOOBAR_H
Enforcement(实施建议)

Flag .h files without #include guards.

标记所有没有包含监护的头文件。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Reason(原因)
    • Enforcement(实施建议)
    相关产品与服务
    专用宿主机
    专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档