SF.7: Don't write using namespace at global scope in a header file

SF.7:不要在头文件中的全局作用域中使用using namespace指令

Reason(原因)

Doing so takes away an #includer's ability to effectively disambiguate and to use alternatives. It also makes #included headers order-dependent as they might have different meaning when included in different orders.

这么做去除了include操作有效消除歧义和使用其他选项的能力。另外,文件以不同次序被包含时的含义可能会随之不同,导致产生包含顺序依赖性。

Example(原因)

// bad.h
#include <iostream>
using namespace std; // bad// user.cpp
#include "bad.h"bool copy(/*... some parameters ...*/);    // some function that happens to be named copyint main()
{copy(/*...*/);    // now overloads local ::copy and std::copy, could be ambiguous
}

Note(注意)

An exception is using namespace std::literals;. This is necessary to use string literals in header files and given the rules - users are required to name their own UDLs operator""_x - they will not collide with the standard library.

有一个例外是using namspace std::literals;。如果需要在头文件中使用字符串字面值而且满足这样的条件:用户被要求为他们自己的UDL运算符“”_x命名而且他们不会和标准库相冲突,使用using namespace std::literals是就可以认为是必要的。

Enforcement(实施建议)

Flag using namespace at global scope in a header file.

标记在头文件的全局作用域中使用using namspace指令的情况。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#sf7-dont-write-using-namespace-at-global-scope-in-a-header-file

新书介绍

《实战Python设计模式》是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

C++核心准则SF.7:不要在头文件中的全局作用域中使用using namespace指令相关推荐

  1. c语言中的stdbool.h头文件,【C语言】中的stdbool.h头文件

    C语言中的stdbool.h头文件 一.相关基础知识 二.具体内容 Win7下安装的VS2015中的stdbool.h的位置为: F:\Program Files (x86)\Microsoft Vi ...

  2. ios c语言头文件,iOS开发 -- C语言基础12(预处理指令)

    iOS开发 -- C语言基础12(预处理指令) 宏定义 预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源 ...

  3. C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)

    C lang: C语言中两个头文件引入相同的头文件(Header.h) C lang: C语言中两个头文件引入相同的头文件(Header.h) [var1] For example: Header.h ...

  4. c语言ofstream头文件,【c++】c++中的ofstream和ifstream

    原文出自[比特网],转载请保留原文链接:http://soft.chinabyte.com/database/460/11433960.sh [导读] ofstream是从内存到硬盘,ifstream ...

  5. c++ h cpp文件如何关联_C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件

    SF.5: A .cpp file must include the .h file(s) that defines its interface SF.5: .cpp文件必须包含定义它接口的.h文件 ...

  6. docker容器mysql头文件_在Docker容器中使用MySQL数据库

    开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...

  7. 51单片机c语言头文件大全,51单片机keilC中头文件absacc.h作用

    当51单片机通过8255和锁存器74LS273来扩展IO时,经常用到头文件absacc.h. 在程序中,用"#include"即可使用其中定义的宏来访问绝对地址,包括:CBYTE. ...

  8. exit函数的头文件问题

    c标准对头文件的解释: 标准头文件要有3点特征: 1)幂等性:多次包含和只包含一次没差别 2)相互独立性:标准头文件之间不可互相包含//说明楼上cpazstido是错的 3)文件级别:头文件要在全局作 ...

  9. c语言exit头文件,exit函数在那个头文件

    c语言 exit的头文件是什么? C语言exit函数的头文件是stdlib.h. exit的声明为 void exit(int value); exit的作用是,退出程序,并将参数value的值返回给 ...

最新文章

  1. 高斯混合模型 GMM
  2. boost::hana::always用法的测试程序
  3. 输在学历的起跑线上?没关系,10本书助你技能爆表升职加薪
  4. 洛谷P2534 [AHOI2012]铁盘整理
  5. postman-SSL证书问题-支持HTTPS请求
  6. python3 模板库 好用_关于3个Python模板库的比较
  7. 月薪一万的北漂可以过上什么样的生活?
  8. 基于Tensorflow针对cifar数据集运用卷积神经网络解决100类图片的分类问题。
  9. otdr测试曲线图软件通用,OTDR常见测试曲线
  10. 常用的C语言编程工具
  11. 【例题】利用伴随矩阵求逆矩阵
  12. vue element-ui实现金额数字添加千分位并保留两位小数
  13. 硬盘上出现0KB文件无法删除解决
  14. Floyd-Warshall算法总结
  15. API接口管理平台eoLinker-AMS V3.2.0
  16. 使用vscode编写小程序并同步
  17. Java面试题(九)-----编写程序实现判断E: / 根目录下是否有后缀名为.jpg的文件,如果有则输出文件名称
  18. 爬虫_app 5.3 adb工具
  19. 坑人的vultr服务商,坑人的送$100活动
  20. android SENSOR_ACCELEROMETER 三轴加速度传感器

热门文章

  1. HC32F005C6PA 硬件I2C采集ADS1115,亲测可用
  2. Redis基础及原理详解
  3. win10 升级后,文件夹、图片等右键一直转圈圈
  4. Android 10 读写文件权限
  5. 智慧安防雷达监控报警系统
  6. 【已实现】如何一个小程序实现支付给不同主体的商户号?
  7. 做线上商城怎么维护老客户呢?
  8. 2018软考上半年(错题总结)
  9. 魔兽争霸作弊秘籍(转载)
  10. GPS中经纬度的十进制和六十进制的转换