在哪个部分中,常量volatile变量存储在c。在微控制器中,我们应该将这种变量放在RAM中。正确?
答案 0 :(得分:9)
Volatile
注意到存储变量的位置。它只是告诉编译器每次从内存中读取变量 ,以避免编译器可能对该变量执行的任何优化。
答案 1 :(得分:9)
局部变量和功能框架 - 堆栈
全局和静态变量(如果未初始化) - .bss块以符号开头
全局和静态变量(如果已初始化) - 数据段
环境变量和参数 - 位于堆栈顶部
动态数据分配 - 堆
Const - ROM
易变 - 无存储
注册 - cpu注册
Const volatile - 与const storage相同的地方
答案 2 :(得分:7)
const volatile
变量意味着您的C程序无法合法地更改它,但其他内容可以。将此变量放在RAM中是合乎逻辑的,但如果您(通过链接器脚本或类似选项)将其置于ROM中,编译器将不会抱怨。将该变量定位在某些存储器映射设备的位置也是有用的,例如,只读定时器计数器寄存器或ADC输出寄存器。
答案 3 :(得分:3)
const
变量很可能存储在flash ROM 中。它们存储在RAM中的唯一时间是在运行时评估它们,例如函数的const参数。或者当你从RAM执行一些调试构建时。
volatile
与存储变量的位置无关,如其他答案中所述。