我应该使用静态还是命名空间?

use*_*942 3 c++ static namespaces

我有一个专用的HW寄存器头文件,我创建了一个名称空间,就像这样,它保存了我所有的HW寄存器地址:

namespace{
 const uint32_t Register1                    = (0x00000000);
 const uint32_t Register2                    = (0x00000004);
 const uint32_t Register3                    = (0x00000008);
 const uint32_t Register4                    = (0x0000000c);
}
Run Code Online (Sandbox Code Playgroud)

这被认为比使用更好:

 static const uint32_t Register1             = (0x00000000);
 static const uint32_t Register2             = (0x00000004);
 static const uint32_t Register3             = (0x00000008);
 static const uint32_t Register4             = (0x0000000c); 
Run Code Online (Sandbox Code Playgroud)

我想命名空间的意思是我们不会污染全局命名空间.是对的吗?

我有一个.cpp,它使用头文件.

Lig*_*ica 5

这两者基本上是等价的.

全局static方法在C++ 03([depr.static])中被弃用而不赞成未命名的命名空间,但后来被C++ 11废弃,因为每个人都意识到一个方法没有客观的好处而不是另一个在一般情况下.

但是,为此,您可能会发现enumenum class更易于管理和惯用.