0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

volatile、register和attribute關(guān)鍵字簡介

CHANBAEK ? 來源:頭條號芯片e棧 ? 作者:頭條號芯片e棧 ? 2023-03-23 10:45 ? 次閱讀

一、volatile關(guān)鍵字

(1)volatile作用

單片機中直接存取原始內(nèi)存地址,防止編譯器的優(yōu)化,導(dǎo)致聲明的變量未被執(zhí)行。

(2)格式

poYBAGQbu22AK1A4AAAZtn73XGs980.png

(3)表達

pYYBAGQbu3qABnajAAAU2vplCAw203.png

注:如果編譯調(diào)試中,依舊存在程序被優(yōu)化現(xiàn)象,可設(shè)置降低代碼優(yōu)化等級。


pYYBAGQbu46AJeBXAAB0FQvr5XA694.png

二、register關(guān)鍵字

(1)register作用

這個關(guān)鍵字請求編譯器盡可能的將變量存在CPU內(nèi)部寄存器中,而不是通過內(nèi)存尋址訪問,以提高效率。

注:注意是盡可能,不是絕對。

poYBAGQbu6GATopHAAAXiddFtzo498.png

用法:為了提高精度,循環(huán)的次數(shù)越多越好,可以將循環(huán)的增量控制定義為寄存器變量register。

(2)格式

poYBAGQbu66ACSw4AAAZUrrh3RU634.png

(3)表達

poYBAGQbu7yAEKGAAAAS783ZCHk981.png

(4)例子

poYBAGQbu8iAfy5ZAAAOryF5flQ727.png

三、attribute關(guān)鍵字

(1)attribute作用用于給聲明的數(shù)組、變量,指定具體的存儲地址位置。

注:①attribute是用來指定變量或結(jié)構(gòu)位域的特殊屬性,該關(guān)鍵字后的雙括弧中的內(nèi)容是屬性說明。

②at關(guān)鍵字可以用來設(shè)置變量的絕對地址,也就是通過這個關(guān)鍵字,指定某個變量處于內(nèi)存里面的某個給定的地址。

(2)格式

poYBAGQbu9SAPoqQAAAjIHnNx98870.png

(3)表達

pYYBAGQbu-GAdqmqAAAnrQODK0U806.png

指的是,將 array數(shù)組的首地址設(shè)定為0x0800C000.

注:該聲明不可用于函數(shù)內(nèi)的局部變量/形式參數(shù)。(函數(shù)內(nèi)局部變量/形式參數(shù),在函數(shù)調(diào)用時才聲明入棧,調(diào)用結(jié)束后,會被出棧,無法指定具體地址)


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635405
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    578

    瀏覽量

    33946
  • Register
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    13939
  • 關(guān)鍵字
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    6898
  • volatile
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    13031
收藏 人收藏

    評論

    相關(guān)推薦

    C語言關(guān)鍵字volatile的用法

    許多程序員都無法正確理解C語言關(guān)鍵字volatile,這并不奇怪。因為大多數(shù)C語言書籍通常都是一兩句一帶而過,本文將告訴你如何正確使用它。
    發(fā)表于 04-11 09:35 ?2655次閱讀

    Linux內(nèi)核關(guān)鍵字講解

    gcc __attribute__ 關(guān)鍵字用來給 函數(shù)、變量、數(shù)據(jù)類型設(shè)置屬性。
    發(fā)表于 06-08 10:57 ?839次閱讀

    c語言中 volatile _Bool 關(guān)鍵字說明

    volatile 關(guān)鍵字呢?volatile總是與優(yōu)化有關(guān),編譯器有一種技術(shù)叫做數(shù)據(jù)流分析,分析程序中的變量在哪里賦值、在哪里使用、在哪里失效,分析結(jié)果可以用于常量合并,常量傳播等優(yōu)化,進一步可以消除一些代碼
    發(fā)表于 01-06 10:46

    請問關(guān)鍵字volatile該什么時候用?

    這東西的概念我懂,但是實際編程時,關(guān)鍵字volatile該什么時候用啊,求大神來點經(jīng)驗之談!
    發(fā)表于 04-28 09:06

    【原創(chuàng)分享】單片機編程關(guān)鍵字volatile

    很多人來說,根本沒見過這個關(guān)鍵字,不知道它的存在。也有很多人知道它的存在,根本沒用過,我對它有種“楊家有女初長成,養(yǎng)在深閨無人識”的感覺。那么volatile關(guān)鍵字到底是什么意思呢,怎么用呢?1
    發(fā)表于 06-29 11:17

    C語言volatile關(guān)鍵字詳解 精選資料分享

    1.volatile和什么有關(guān)百度翻譯是這樣子翻譯volatile的:圖1-1 百度翻譯volatile截圖volatile屬于C語言的關(guān)鍵字
    發(fā)表于 07-22 07:20

    volatile關(guān)鍵字應(yīng)用場景及示例

    volatile關(guān)鍵字1.應(yīng)用場景2.示例1.應(yīng)用場景volatile關(guān)鍵字分析,往往應(yīng)用在三種場合1)多線程編程共享全局變量的時候,該全局變量要加上
    發(fā)表于 08-24 07:21

    C語言volatile關(guān)鍵字之間有什么關(guān)系?

    C語言volatile關(guān)鍵字之間有什么關(guān)系?
    發(fā)表于 11-11 07:01

    嵌入式程序員常見的const、static、volatile關(guān)鍵字

    嵌入式程序員const、static、volatile三個關(guān)鍵字的樸素認識摘要:在C語言程序編寫中,const、static關(guān)鍵字是比較熟悉的,volatile
    發(fā)表于 12-21 06:08

    C語言中的volatile關(guān)鍵字

    volatile關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改。
    發(fā)表于 05-27 09:32 ?3273次閱讀

    關(guān)于volatile關(guān)鍵字對編譯器優(yōu)化的影響

    volatile關(guān)鍵字對編譯器優(yōu)化的影響
    的頭像 發(fā)表于 02-28 17:15 ?2948次閱讀

    一般什么時候需要使用volatile關(guān)鍵字

    想必大家平時都見過volatile關(guān)鍵字,可是大家知道什么時候需要使用volatile關(guān)鍵字嗎?
    的頭像 發(fā)表于 12-24 17:29 ?1047次閱讀

    【嵌入式】C語言中volatile關(guān)鍵字

    volatile06. 附錄01. volatile概述volatile是C語言中的一個關(guān)鍵字。將變量定義為volatile就表示告訴編譯器
    發(fā)表于 10-21 10:21 ?6次下載
    【嵌入式】C語言中<b class='flag-5'>volatile</b><b class='flag-5'>關(guān)鍵字</b>

    C語言中__attribute__ 關(guān)鍵字的用法

    嵌入式開發(fā),離不開 C 語言,C語言中有很多語法會直接或間接影響你代碼的質(zhì)量,下面就來講講__attribute__ 關(guān)鍵字的用法。 1. 什么是 __attribute__ GNU C 編譯器
    發(fā)表于 10-19 09:06 ?1.3w次閱讀

    一文詳解volatile關(guān)鍵字

    volatile 是易變的、不穩(wěn)定的意思。和const一樣是一種類型修飾符,volatile關(guān)鍵字修飾的變量,編譯器對訪問該變量的代碼不再進行優(yōu)化,從而可以提供對特殊地址的穩(wěn)定訪問。
    的頭像 發(fā)表于 02-15 11:54 ?1069次閱讀
    一文詳解<b class='flag-5'>volatile</b><b class='flag-5'>關(guān)鍵字</b>