找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3337|回復: 4
打印 上一主題 下一主題
收起左側

請問C語言編譯器設置中volitate有什么用呢?

[復制鏈接]
跳轉到指定樓層
樓主
ID:518902 發(fā)表于 2021-4-20 18:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我知道它的作用是讓編譯器不自動優(yōu)化掉一些“它認為”需要優(yōu)化的變量,因為寄存器比SRAM讀取要快,優(yōu)化后就直接一直讀寄存器,不管sram了。。之類的。
但是我目前沒想到它在什么地方有什么用耶。。。。
有大神給我解答下么
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:332214 發(fā)表于 2021-4-20 18:28 | 只看該作者
volitate修飾的變量 還可以理解為獲取變量值的時候 編譯器會重新從該變量地址獲取值,而不會從寄存器中讀取變量副本。
回復

使用道具 舉報

板凳
ID:518902 發(fā)表于 2021-4-20 18:54 | 只看該作者
啊哈哈123 發(fā)表于 2021-4-20 18:28
volitate修飾的變量 還可以理解為獲取變量值的時候 編譯器會重新從該變量地址獲取值,而不會從寄存器中讀取 ...

感謝回答 ,是的,我就是很好奇什么時候會發(fā)生sram里變量變了 寄存器內部不變的情況。。
回復

使用道具 舉報

地板
ID:592807 發(fā)表于 2021-4-20 20:13 | 只看該作者
laopihappy123 發(fā)表于 2021-4-20 18:54
感謝回答 ,是的,我就是很好奇什么時候會發(fā)生sram里變量變了 寄存器內部不變的情況。。

我的理解就是全局變量在處理函數(shù)時變量突然被中斷改變

評分

參與人數(shù) 1黑幣 +9 收起 理由
laopihappy123 + 9 很給力!

查看全部評分

回復

使用道具 舉報

5#
ID:909296 發(fā)表于 2021-4-20 20:44 | 只看該作者
這種情況更多可能是比如引腳電平,如果你在程序里面一直寫讀取引腳電平,可能編譯器會優(yōu)化掉,只從緩存里面讀取,但其實引腳連接的外部電平已經變化,單片機卻使用的是過時的數(shù)據(jù),這時就需要volitate去修飾,讓單片機不要去偷懶,每次都讀一次引腳電平。這些其實在單片機的庫函數(shù)里面有大量體現(xiàn),感興趣的話可以去翻翻看,學習一下

評分

參與人數(shù) 2黑幣 +29 收起 理由
laopihappy123 + 9
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表