在哪个部分是存储在c中的常量易失性变量?在微控制器中,我们应该将这种变量放入RAM中。对?c中存储的常量volatile变量在哪里?
回答
A const volatile
变量意味着你的C程序不能合法地改变它,但其他东西可以。将这个变量放在RAM中是合乎逻辑的,但是如果您通过链接描述文件或类似选项将其放置在ROM中,编译器就不会抱怨。在某些存储器映射设备所在的位置找到这个变量也是有用的,例如,一个只读定时器计数器寄存器或一个ADC输出寄存器。
因此,如果我们将常量变量分配给ROM,那么编译器会自动将这些变量分配给ROM。对? – suraj
这取决于你的编译器以及你如何使用它。 –
Volatile
已经注意到存储变量的位置。它只是告诉编译器每次从内存中读取变量以避免编译器可能为该变量执行的任何优化。
const
单片机应用程序的变量很可能存储在闪存中ROM。它们存储在RAM中的唯一时间是在运行时对它们进行评估,例如函数的const参数。或者当你正在做一些从RAM执行的调试版本。
volatile
与存储变量的位置无关,如其他答案中的解释。
局部变量和函数帧 - 堆如果未初始化
全局和静态变量 - 通过符号的.bss块起始如果
全局和静态变量初始化 - 数据段
环境变量和参数 - 在堆栈顶部
动态数据分配 - 堆
CONST - ROM
挥发性 - 没有存储
寄存器 - CPU寄存器
CONST挥发性的 - 在相同的地方为const存储
- 1. 变量存储在哪里?
- 2. Python中的变量存储在哪里?
- 3. 存储在变量栈中的变量在哪里?
- 4. JSFiddle在哪里存储我的变量?
- 5. 常量数据应存储在哪里?
- 6. 在哪里存储常量字符串
- 7. 常量编辑器的TYPO3常量在哪里存储?
- 8. .NET局部变量存储在哪里?
- 9. 挥发性变量存储在哪里?
- 10. FORTRAN在哪里存储局部变量?
- 11. $ _SESSION变量存储在哪里?
- 12. nodejs在哪里存储变量?
- 13. 在哪里存储javascript变量
- 14. selenium webdriver:存储变量在哪里?
- 15. golang环境变量存储在哪里?
- 16. C中的volatile变量
- 17. 在哪里存储类的具体命名常量在C++
- 18. 存储在内存中的字符串常量在哪里?
- 19. 存储在内存中的DLL的全局变量在哪里?
- 20. 静态存储在内存中的全局变量在哪里?
- 21. 接口变量指向的地址在哪里存储 - C#?
- 22. 将enum常量存储在变量中
- 23. 如何在变量中存储常量?
- 24. 存储在JVM中的对象的实例变量在哪里?
- 25. 在PHP中,全局声明的变量存储在哪里?
- 26. 在Java中存储捕获的变量在哪里?
- 27. 存储在鱼壳中的通用变量在哪里?
- 28. JavaScript常量在浏览器中存储在哪里?
- 29. 哪一部分在C++可执行文件中存储全局常量变量?
- 30. 哪里存储在Java中的静态变量?
在微控制器中,您可以看到端口引脚通常定义为易失性变量。由于该编译器不会优化代码并且不会用缓存值替换该值。所以我们可以确保每次只能从端口引脚读取最新的更新值。 – kapilddit