11 December 2023
“Do not add non-standard entities to namespace std
”
理由
添加到 std
会使得代码不符合标准,还可能导致将来的版本出错。
例子
namespace std { // BAD: violates standard class My_vector { // . . . }; } namespace Foo { // GOOD: user namespace is allowed class My_vector { // . . . }; }
Previous posts
- > CppCoreGuidelines SL.2 优先使用标准库
- > CppCoreGuidelines SL.1 尽量用程序库
- > CppCoreGuidelines SF.22 匿名 namespace 中放内部的、不导出实体
- > CppCoreGuidelines SF.21 不要在头文件中用匿名 namespace
- > CppCoreGuidelines SF.20 用 namespace 表达逻辑结构
- > CppCoreGuidelines SF.12 相对路径的头文件用引号包含,其他情况用尖括号
- > CppCoreGuidelines SF.11 头文件应当自包含
- > CppCoreGuidelines SF.10 避免依赖于隐式包含的变量名
- > CppCoreGuidelines SF.9 避免源代码之间循环依赖
- > CppCoreGuidelines SF.8 每个头文件都要加上
- > CppCoreGuidelines SF.7 不要在头文件全局使用 using namespace
- > CppCoreGuidelines SF.6 在过渡期,基础的库可以用 using namespace,而其他则限制在局部范围使用
- > CppCoreGuidelines SF.5 一个 .cpp 文件必须包含为其定义了接口的头文件
- > 单词本:linkisch
- > CppCoreGuidelines SF.4 在其他声明之前包含头文件
- > CppCoreGuidelines SF.3 多个源码文件中用到的声明要用放在头文件里
- > CppCoreGuidelines SF.2 头文件里不能包含对象定义或非 inline 的函数定义
- > CppCoreGuidelines SF.1 如果项目里没有其他约定,请用 .cpp 作为代码文件后缀,.h 作为接口文件后缀
- > CppCoreGuidelines CPL.3 如果必须用 C 实现接口,在调用这些接口的时候用 C++
- > CppCoreGuidelines CPL.2 如果一定要用 C,用 C 和 C++ 的公共子集,以 C++ 编译 C