专栏首页C++核心准则原文翻译C++核心准则​SF.8:为所有的.h文件使用包含监护​

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

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

// 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

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则F.52:在lambda表达式中使用引用形式捕捉局部变量

    F.52 在lambda表达式中使用引用形式捕捉局部变量,包含向算法传递变量的情况。

    面向对象思考
  • C++核心准则CP.26:不要分离线程

    Often, the need to outlive the scope of its creation is inherent in the threads ...

    面向对象思考
  • C++核心准则ES.65:不要解引用无效指针

    Dereferencing an invalid pointer, such as nullptr, is undefined behavior, typica...

    面向对象思考
  • SAP UI5应用里类型为Edm.DateTime的日期控件设计原理

    Recently I was struggled with a customer incident and finally I realized that I ...

    Jerry Wang
  • DAY12:阅读CUDA C Runtime 之多GPU编程

    GPUS Lady
  • Tree - Information Theory

    This will be a series of post about Tree model and relevant ensemble method, inc...

    风雨中的小七
  • Cronos -- hack the box

    3 ports is open, detect the detailed services:

    madneal
  • Nibbles - Hack the box

    Target: 10.10.10.75(OS: Linux) Kali linux: 10.10.16.44

    madneal
  • 使用SAP CRM中间件XIF Adapter但没有IDOC生成的故障原因分析

    Today I meet with this issue as title. I followed the steps in blog Step by step...

    Jerry Wang
  • Android跨进程通信IPC之5——Binder的三大接口

    本片文章的主要目的是让大家对Binder有个初步的了解,既然是初步了解,肯定所是以源码上的注释为主,让大家对Binder有一个更直观的认识。PS:大部分注释我是...

    隔壁老李头

扫码关注云+社区

领取腾讯云代金券