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

标签 c++ static namespaces

我有一个专用的 HW 寄存器头文件,我创建了一个 namespace ,就像这样,它包含我所有的 HW 寄存器地址:

namespace{
 const uint32_t Register1                    = (0x00000000);
 const uint32_t Register2                    = (0x00000004);
 const uint32_t Register3                    = (0x00000008);
 const uint32_t Register4                    = (0x0000000c);
}

这是否比使用更好:

 static const uint32_t Register1             = (0x00000000);
 static const uint32_t Register2             = (0x00000004);
 static const uint32_t Register3             = (0x00000008);
 static const uint32_t Register4             = (0x0000000c); 

我想命名空间的意义在于我们不会污染全局命名空间。是吗?

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

最佳答案

两者本质上是等价的。

global-static 方法在 C++03 ([depr.static]) 中被弃用,取而代之的是未命名的命名空间,但后来 undeprecated by C++11因为每个人都意识到there is no objective benefit of one over the other在一般情况下。

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

关于c++ - 我应该使用静态还是命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193604/

相关文章:

c++ - 在成员函数中的析构函数之后调用构造函数

c++ - 访问继承函数

c++ - OpenMP 库规范

c++ - 在另一个静态对象的析构函数中构造的静态对象的析构函数

kubernetes - io.fabric8.kubernetes.client.KubernetesClientException : Forbidden! 配置的服务帐户无权访问

c++ - std::string 什么时候重新分配内存?

java - 使匿名类静态 - 通过静态方法

c - 在函数内使用 const 和 static const 的速度有区别吗?

c++ - 如何使用C++中另一个命名空间中定义的操作

Android AdMob FULL XML NAMESPACE 在任何地方发布?