2

哪个部分是存储在 c. 中的常量 volatile 变量?在微控制器中,我们应该将此类变量放入 RAM。正确的?

4

5 回答 5

9
  1. 局部变量和函数框架 - 堆栈

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

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

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

  5. 动态数据分配 - 堆

  6. 常量-ROM

  7. 易挥发 - 无储存

  8. 寄存器 - cpu 寄存器

  9. const volatile - 与 const storage 在同一个地方

于 2012-12-30T09:02:29.013 回答
9

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

于 2012-05-03T11:12:14.300 回答
7

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

于 2012-05-03T11:31:08.927 回答
3

const微控制器应用程序的变量很可能存储在闪存ROM中。它们存储在 RAM 中的唯一时间是在运行时评估它们,例如函数的 const 参数。或者当您从 RAM 执行一些调试构建时。

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

于 2012-05-03T11:50:12.710 回答
0

好吧,作为一个常量需要 RAM 地址,它可以存储在 ROM 中,但很可能它会(通过扩展)存储在(只读)汇编代码中,就像 for a += 2. 这是一个最快的速度volatile

于 2021-12-16T13:26:40.663 回答