第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

您好,請問一下在c語言中volatile關(guān)鍵字是什么含義?

您好,請問一下在c語言中volatile關(guān)鍵字是什么含義?

C iOS
慕少森 2021-05-24 15:19:54
在C語言中經(jīng)常會遇到volatile關(guān)鍵字,一直看不懂加了這個(gè)和不加會有什么樣的區(qū)別,哪位大俠能否給點(diǎn)解釋!
查看完整描述

2 回答

?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊

volatile 影響編譯器編譯的結(jié)果,指出,volatile 變量是隨時(shí)可能發(fā)生變化的,與volatile變量有關(guān)的運(yùn)算,不要進(jìn)行編譯優(yōu)化,以免出錯(cuò),(VC++ 在產(chǎn)生release版可執(zhí)行碼時(shí)會進(jìn)行編譯優(yōu)化,加volatile關(guān)鍵字的變量有關(guān)的運(yùn)算,將不進(jìn)行編譯優(yōu)化。)。

例如:
volatile int i=10;
int j = i;
...
int k = i;

volatile 告訴編譯器i是隨時(shí)可能發(fā)生變化的,每次使用它的時(shí)候必須從i的地址中讀取,因而編譯器生成的可執(zhí)行碼會重新從i的地址讀取數(shù)據(jù)放在k中。

而優(yōu)化做法是,由于編譯器發(fā)現(xiàn)兩次從i讀數(shù)據(jù)的代碼之間的代碼沒有對i進(jìn)行過操作,它會自動把上次讀的數(shù)據(jù)放在k中。而不是重新從i里面讀。這樣以來,如果i是一個(gè)寄存器變量或者表示一個(gè)端口數(shù)據(jù)就容易出錯(cuò),所以說volatile可以保證對特殊地址的穩(wěn)定訪問,不會出錯(cuò)。

查看完整回答
反對 回復(fù) 2021-05-30
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

用volatile關(guān)鍵字定義變量,相當(dāng)于告訴編譯器,這個(gè)變量的值會隨時(shí)發(fā)生變化,每次使用時(shí)都需要去內(nèi)存里重新讀取它的值,并不要隨意針對它作優(yōu)化。

不使用volatile定義的變量,可能因?yàn)榫幾g器優(yōu)化而出現(xiàn)一些問題,具體可以看給出的參考資料,里面有一個(gè)例子。

建議使用volatile變量的場所:
(1) 并行設(shè)備的硬件寄存器
(2) 一個(gè)中斷服務(wù)子程序中會訪問到的非自動變量(全局變量)
(3) 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

查看完整回答
反對 回復(fù) 2021-05-30
  • 2 回答
  • 0 關(guān)注
  • 463 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號