23 November 2023

C++ 核心指南目录

“Don’t use an unnamed (anonymous) namespace in a header”

理由

在头文件中用到匿名 namespace 基本上都是一种 bug

例子

// file foo.h:
namespace
{
    const double x = 1.234;  // bad

    double foo(double y)     // bad
    {
        return y + x;
    }
}

namespace Foo
{
    const double x = 1.234; // good

    inline double foo(double y)        // good
    {
        return y + x;
    }
}

强化

  • 标记在头文件中用到匿名 namespace 的情况