久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2180|回復: 2
收起左側

keil4里面用volatile定義的函數與一般函數有什么不同

[復制鏈接]
ID:601478 發表于 2020-5-8 14:52 | 顯示全部樓層 |閱讀模式
如題,volatile用于定義變量的作用是防止變量在賦值的過程中被優化,那用在函數定義上的作用是什么呢?是類似的防優化嗎?求大佬告知
回復

使用道具 舉報

ID:686782 發表于 2020-5-8 21:47 | 顯示全部樓層
沒在keil里用過volatile。C里面倒是學過一點。接觸的不多,若有錯誤還請指正。
舉個例子就是比如存在一個變量temp,例如實時的時鐘值,你第一次調用的時候這個值是19:00,下一次調用因為時間發生走動可能是19:01。這類變量在程序運行的過程中本身因為讀寫之類的原因就會發生改變,而這時候編譯器的流程認為這個變量是沒有發生改變的,因此對于一些語句就會進行優化,比如將該變量連續賦值給一個變量a兩次:
a=temp;
a=temp;
如果temp是常規的變量,在這個過程中并沒有引起temp的改變,因此第二句語句實際上是一個無效語句,在編譯時他會被優化。現在你把temp定義為volatile,那么如果外部器件對這個變量相關的信息進行讀寫改變了程序中的數據,而這種改動又不是程序里可以獲取到信息的(比如中斷函數,提前寫好了信息),那么他就會保留不去做這種優化。因為這時候你傳遞出一個temp會被改動的信息,如果優化了,可能導致最后的賦值出錯。
回復

使用道具 舉報

ID:601478 發表于 2020-5-9 17:05 | 顯示全部樓層
OHHO 發表于 2020-5-8 21:47
沒在keil里用過volatile。C里面倒是學過一點。接觸的不多,若有錯誤還請指正。
舉個例子就是比如存在一個 ...

謝謝,講的很清晰
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 香蕉久久久 | 性一爱一乱一交一视频 | 91porn在线| 欧美成年黄网站色视频 | 毛片1 | 日韩欧美手机在线 | 美国一级黄色片 | 欧美日韩一二三区 | 成人免费视频网站在线看 | 欧美中文字幕在线观看 | 欧美精品一区二区三区蜜臀 | 欧美精品一区二区三区四区 | 色婷婷综合久久久中字幕精品久久 | 欧美日韩国产一区 | 国产精品视频一二三区 | 精国产品一区二区三区四季综 | 97在线超碰 | 成在线人视频免费视频 | 毛片一区二区三区 | 天天干精品 | 亚洲一区二区三区免费视频 | 欧美激情综合色综合啪啪五月 | 国产精品久久久久久亚洲调教 | k8久久久一区二区三区 | 国产亚洲精品久久午夜玫瑰园 | 国产精品黄色 | 蜜臀av日日欢夜夜爽一区 | 亚洲欧美国产一区二区三区 | 一区中文 | 成人亚洲精品久久久久软件 | 99免费在线观看 | 亚洲一二三区不卡 | 在线中文视频 | 欧美三级电影在线播放 | 国产亚洲精品美女久久久久久久久久 | 亚洲成人中文字幕 | 国产主播第一页 | www.狠狠干 | 亚洲欧美中文日韩在线v日本 | 亚洲欧美激情精品一区二区 | 亚洲精品一区二区三区丝袜 |