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

sur*_*raj 3 c microcontroller

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

P.P*_*.P. 9

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


小智 9

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

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

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

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

  5. 动态数据分配 - 堆

  6. Const - ROM

  7. 易失性 - 无存储空间

  8. 注册 - cpu寄存器

  9. Const volatile - 与const存储在同一个地方


Ale*_*nze 7

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