繁体   English   中英

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

[英]Should I use static or a namespace?

我有一个专用的HW寄存器头文件,我创建了一个名称空间,就像这样,它保存了我所有的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,它使用头文件。

这两者基本上是等价的。

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

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

这两个是100%等价的,它们也相当于省略namespacestatic

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

原因很简单 - 除非你明确声明它是extern否则const变量是static

但是,这看起来像使用枚举更可取的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM