具有常量成员的结构的内存分配

时间:2013-06-25 03:38:00

标签: c variables embedded system structure

我用C语言编写嵌入式系统,我用两个常量成员“val”和“ptr”定义一个结构。

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

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

TEST var;

由于

1 个答案:

答案 0 :(得分:2)

TEST实例需要进入读/写内存 - TEST实例是非const的,即使它的所有成员都是const。 GCC会将结构发送到.data,它是读/写的,链接器脚本应该把它放到适当的内存类型中。

C中的

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

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