一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C/C++關(guān)鍵詞 - volatile

 楓中眸zc 2022-05-28 發(fā)布于江西

volatile關(guān)鍵字是一個(gè)類(lèi)型修飾符。

用它聲明的類(lèi)型變量表示隨時(shí)可能被某編譯器未知的因素的修改。比如OS,hardware or other threads.簡(jiǎn)單來(lái)說(shuō),如果一個(gè)變量使用了volatile進(jìn)行修飾,那么每次去讀取該值的時(shí)候是從對(duì)應(yīng)的地址中去讀取,而不會(huì)因?yàn)榫幾g器發(fā)現(xiàn)程序中間沒(méi)有對(duì)該值進(jìn)行操作所以不從內(nèi)存而是從上次讀到的數(shù)據(jù)進(jìn)行操作(這個(gè)就是編譯器的優(yōu)化,而使用了volatile關(guān)鍵字表示編譯器不對(duì)次進(jìn)行優(yōu)化,每次都從對(duì)應(yīng)的內(nèi)存中讀取)。這樣就保證了對(duì)特殊地址的穩(wěn)定訪問(wèn)。

代碼演示如下:

demo1:不帶 volatile 修飾符

demo2:帶 volatile 修飾符

volatile使用場(chǎng)景

1、中斷服務(wù)程序中修改的供其他程序檢測(cè)的變量

  • 2、多任務(wù)環(huán)境下各任務(wù)之間共享的變量

  • 3、存儲(chǔ)器映射的硬件寄存器

  • 4、有些變量是用 volatile 關(guān)鍵字聲明的。當(dāng)兩個(gè)線程都要用到某一個(gè)變量且該變量的值會(huì)改變時(shí),應(yīng)該用 volatile 聲明,該關(guān)鍵字的作用是防止優(yōu)化編譯器把變量從內(nèi)存裝入 CPU 寄存器中。如果變量被裝入寄存器,那么兩個(gè)線程有可能一個(gè)使用內(nèi)存中的變量,一個(gè)使用寄存器中的變量,這會(huì)造成程序的錯(cuò)誤執(zhí)行。volatile 的意思是讓編譯器每次操作該變量時(shí)一定要從內(nèi)存中真正取出,而不是使用已經(jīng)存在寄存器中的值。

  • volatile指針

    1、volatile int * p;
  • 修飾指針指向的對(duì)象、數(shù)據(jù)是volatile的

2、char* volatile p;

修飾指針自身的值——代表地址的整數(shù)變量

注意事項(xiàng)

  • 1、非volatile int值可以賦值給volatile int,反之不行。

  • 2、C++中一個(gè)有volatile標(biāo)識(shí)符的類(lèi)只能訪問(wèn)它接口的子集,一個(gè)由類(lèi)的實(shí)現(xiàn)者控制的子集。用戶只能用const_cast來(lái)獲得對(duì)類(lèi)型接口的完全訪問(wèn)。此外,volatile向const一樣會(huì)從類(lèi)傳遞到它的成員

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    亚洲视频在线观看免费中文字幕 | 99久久人妻中文字幕| 日本一本不卡免费视频| 东京热加勒比一区二区三区| 亚洲一区二区三区熟女少妇| 国产a天堂一区二区专区| 99久久精品国产麻豆| 好吊色欧美一区二区三区顽频| 欧美激情区一区二区三区| 亚洲精品偷拍视频免费观看| 日韩精品一区二区三区四区| 国产女优视频一区二区| 久久中文字幕中文字幕中文| 国产精品欧美激情在线| 婷婷激情五月天丁香社区| 五月的丁香婷婷综合网| 亚洲国产精品无遮挡羞羞| 久久大香蕉一区二区三区| 丝袜美女诱惑在线观看| 精品伊人久久大香线蕉综合| 少妇在线一区二区三区| 狠狠亚洲丁香综合久久| 91精品国产综合久久精品| 在线免费看国产精品黄片| 老司机这里只有精品视频| 精品欧美一区二区三久久| 小草少妇视频免费看视频| 日本欧美一区二区三区就 | 日本在线不卡高清欧美| 国产又长又粗又爽免费视频| 日韩视频在线观看成人| 国产精品一区二区丝袜| 视频一区二区黄色线观看| 五月情婷婷综合激情综合狠狠| 欧美一本在线免费观看| 女厕偷窥一区二区三区在线| 久热香蕉精品视频在线播放| 欧美自拍系列精品在线| 色哟哟在线免费一区二区三区| 九九热这里只有精品视频| 好吊日在线观看免费视频|