[英]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废弃,因为每个人都意识到在一般情况下一个方面没有客观的好处。 。
但是,为此,您可能会发现enum
或enum class
更易于管理和惯用。
这两个是100%等价的,它们也相当于省略namespace
和static
:
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.