如何隐藏类中的寄存器地址

use*_*942 1 c++ driver cpu-registers

我正在创建一个驱动程序,我已经在我的类的头文件中声明了我的寄存器.

private:

static const uint32_t REG1 = (0x00000000);
static const uint32_t REG2 = (0x00000004);
static const uint32_t REG3 = (0x00000008);
static const uint32_t REG4 = (0x0000000c);
static const uint32_t REG5 = (0x00000010);
// etc ...
Run Code Online (Sandbox Code Playgroud)

然后在我.cpp,我做了这个:

const uint32_t Class::REG1;
const uint32_t Class::REG2;
const uint32_t Class::REG3;
const uint32_t Class::REG4;
const uint32_t Class::REG5;
Run Code Online (Sandbox Code Playgroud)

有人告诉我,我需要隐藏寄存器值,不要将它们放入标题中.哪种方式最佳?

Bat*_*eba 5

一种方法是将它们放在类的源文件中的匿名命名空间中,将它们从标题(和类)中完全删除:

namespace /*no name mean it's an anonymous namespace*/ {
    const uint32_t REG1 = ( 0x00000000);
    /*etc*/
}
Run Code Online (Sandbox Code Playgroud)

我已经放弃了static它,不再需要了.

这样,它们只能从该特定编译单元访问.