我用C语言编写嵌入式系统,我用两个常量成员“val”和“ptr”定义一个结构。
typedef struct{
const u8 val;
u8 *const ptr;
}TEST;
如果我将这种类型变量声明为全局变量,那么变量是放在ROM还是RAM中?
TEST var;
由于
答案 0 :(得分:2)
TEST实例需要进入读/写内存 - TEST实例是非const的,即使它的所有成员都是const。 GCC会将结构发送到.data,它是读/写的,链接器脚本应该把它放到适当的内存类型中。
C中的'const'并不能保证存储真的是不可变的 - 它只意味着严格按照C标准执行的程序不会修改'const'项。
如果您希望数据进入ROM,那么您需要一个适当的链接描述文件,将.rodata部分放入ROM中。