在哪個部分是存儲在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