Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在用 C 语言对嵌入式系统进行编程,并且我定义了一个具有两个常量成员“val”和“ptr”的结构。
typedef struct{ const u8 val; u8 *const ptr; }TEST;
如果我将这种类型变量声明为全局变量,该变量将放在 ROM 中还是 RAM 中?
TEST var;
谢谢
TEST 实例需要进入读/写内存 - TEST 实例是非常量的,即使它的所有成员都是 const。GCC 会将结构发送到可读写的 .data 中,链接描述文件应将其放入适当的内存类型。
C 中的 'const' 并不能保证存储确实是不可变的 - 它仅意味着严格按照 C 标准执行的程序不会修改 'const' 项。
如果您希望数据进入 ROM,那么您需要一个适当的链接描述文件,将 .rodata 部分放入 ROM。