CppCoreGuidelines SF.22 匿名 namespace 中放内部的、不导出实体
27 November 2023
“Use an unnamed (anonymous) namespace for all internal/non-exported entities”
理由
外部程序不该依赖于嵌套的匿名 namespace 中的实体。考虑把具体实现的代码文件中用到的定义放到匿名 namespace,除非某个实例需要导出供外部使用。
坏例子
static int f(); int g(); static bool h(); int k();
好例子
namespace { int f(); bool h(); } int g(); int k();
例子
API 类和成员不能放在匿名 namespace;但是定义在具体实现的代码文件中的辅助类和函数应当放在匿名 namespace 范围