1

我正在用 C 语言对嵌入式系统进行编程,并且我定义了一个具有两个常量成员“val”和“ptr”的结构。

typedef struct{
const u8 val;
u8 *const ptr;
}TEST;

如果我将这种类型变量声明为全局变量,该变量将放在 ROM 中还是 RAM 中?

TEST var;

谢谢

4

1 回答 1

2

TEST 实例需要进入读/写内存 - TEST 实例是非常量的,即使它的所有成员都是 const。GCC 会将结构发送到可读写的 .data 中,链接描述文件应将其放入适当的内存类型。

C 中的 'const' 并不能保证存储确实是不可变的 - 它仅意味着严格按照 C 标准执行的程序不会修改 'const' 项。

如果您希望数据进入 ROM,那么您需要一个适当的链接描述文件,将 .rodata 部分放入 ROM。

于 2013-06-25T15:44:40.617 回答