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

标签 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 ...

然后在我的 .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;

我被告知我需要隐藏寄存器值并且不要将它们放入标题中。哪种方法最适合执行此操作?

最佳答案

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

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

我已经删除了 static 并且不再需要它。

这样,它们将只能从特定的编译单元访问。

关于c++ - 如何隐藏类中的寄存器地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27500406/

相关文章:

c++ - 在不同类型的对象指针之间切换

C++数组的继承

linux - 是否可以修改接口(interface)索引

c - Gcc 内联汇编 "' asm' operand has impossible constraints"是什么意思?

c++ - 根据单词长度对句子进行排序

c++ - VS2013中SSE2代码运行报错

ubuntu - 在 ubuntu 16.04 中为 AMD 安装 OpenCL

c++ - mongoDB,C++ libmongoclient.so : cannot open shared object file: No such file or directory

cpu-architecture - Zilog z80 I、R 寄存器用途

c++ - 现代 CPU 内循环间接优化