c中存储的常量volatile变量在哪里?

时间:2012-05-03 11:03:12

标签: c microcontroller

在哪个部分中,常量volatile变量存储在c。在微控制器中,我们应该将这种变量放在RAM中。正确?

4 个答案:

答案 0 :(得分:9)

Volatile注意到存储变量的位置。它只是告诉编译器每次从内存中读取变量 ,以避免编译器可能对该变量执行的任何优化。

答案 1 :(得分:9)

  1. 局部变量和功能框架 - 堆栈

  2. 全局和静态变量(如果未初始化) - .bss块以符号开头

  3. 全局和静态变量(如果已初始化) - 数据段

  4. 环境变量和参数 - 位于堆栈顶部

  5. 动态数据分配 - 堆

  6. Const - ROM

  7. 易变 - 无存储

  8. 注册 - cpu注册

  9. Const volatile - 与const storage相同的地方

答案 2 :(得分:7)

const volatile变量意味着您的C程序无法合法地更改它,但其他内容可以。将此变量放在RAM中是合乎逻辑的,但如果您(通过链接器脚本或类似选项)将其置于ROM中,编译器将不会抱怨。将该变量定位在某些存储器映射设备的位置也是有用的,例如,只读定时器计数器寄存器或ADC输出寄存器。

答案 3 :(得分:3)

微控制器应用程序的

const变量很可能存储在flash ROM 中。它们存储在RAM中的唯一时间是在运行时评估它们,例如函数的const参数。或者当你从RAM执行一些调试构建时。

volatile与存储变量的位置无关,如其他答案中所述。