衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

C語言中關鍵詞extern用法的一個注意事項

冬至子 ? 來源:永珂在線 ? 作者:沙鷗520 ? 2023-11-02 14:42 ? 次閱讀

在做項目開發時,在一個單片機C語言程序(用keil開發)中,如果有兩個C文件,在其中一個C文件(設為a文件)定義了一個全局變量v,并在此文件里的程序段里修改此變量,在另外一個C文件(設為b文件)里用外部變量(extern)的方法引用此變量,并讀取變量v,但是,在b中讀取時結果變量v出錯,出現亂值。

什么原因?

v在b文件里作為外部變量,被認為分配的地址在其他地方,在b文件里只是讀取沒有寫入,實際就沒有分配內存地址,從而出錯。

圖片

怎么修改?

方法1,在b文件中定義此變量v,在a文件中用外部變量的方式引用變量v,在a文件里修改變量v,在b文件中回讀變量v,結果正常。

這樣,在b文件里定義了變量v,分配了內存地址,在a文件中引用外部變量v并進行了寫入操作,也分配了內存地址,所以不出錯。

圖片

方法2,最優方法,在一個c文件(如a.c)里定義全局變量v,在其h文件(a.h)里再引用為外部變量,在用到變量v的其他c文件里include a.h,這樣的話不管是否讀寫都無問題。當然,a.c里也要include a.h。

圖片

注意:全局變量才能被外部引用,靜態變量和局部變量不行的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638518
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137703
  • 靜態變量
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6687
  • extern
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2964
收藏 人收藏

    評論

    相關推薦

    C語言中不建議使用的關鍵詞

    我們在學校學習或者有參加過C語言培訓的話,應該都聽說過“不建議使用goto語句”。但是,般不會有人告訴你為什么不建議使用goto語句,類似于這種存在但不建議使用的關鍵詞還有很多。
    發表于 09-08 14:18 ?1410次閱讀

    C語言for循環的用法注意事項

    C 語言種廣泛使用的編程語言,它具有簡潔、高效、靈活的特點。C 語言中有很多控制流程的語句,
    的頭像 發表于 11-20 18:27 ?2617次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>for循環的<b class='flag-5'>用法</b>和<b class='flag-5'>注意事項</b>

    高速電路中過孔設計注意事項

    ,總結出高速PCb過孔設計中的注意事項關鍵詞:過孔;寄生電容;寄生電感;非穿導孔技術[hide][/hide]
    發表于 08-16 13:33

    [討論]提高網站關鍵詞排名的28SEO小技巧

    提高網站關鍵詞排名的28SEO小技巧關鍵詞位置、密度、處理 URL中出現關鍵詞(英文) 網頁標題中出現關鍵詞(1-3
    發表于 12-01 17:08

    關鍵詞優化有哪些實用的方法

    在這里就來和大家起來分享下。關鍵詞應該怎么去優化,這是我們的思考,然后就要想對應的方法去做優化,通常我們做
    發表于 08-11 01:19

    VHDL語言中信號設置的不同方式,有什么注意事項

    并行同時語句命令主要有哪幾種表達方式?VHDL語言中信號設置的不同方式及注意事項
    發表于 04-08 06:26

    介紹一下關鍵extern用法

    學單片機C語言定要熟悉關鍵字的用法,本文介紹一下關鍵ex
    發表于 07-15 06:38

    C語言中的數據類型有哪幾種?const有哪些用法

    C語言中的數據類型有哪幾種?const有哪些用法?作用域與static用法是什么?extern是如何去使用的?
    發表于 07-22 06:51

    c語言和單片機遇見的小注意事項

    c語言和單片機遇見的小注意事項(會長期更)c語言中1.定義字符串char str[30]="abcdefg";[30]預存空間不可以忘記2.
    發表于 12-09 07:23

    編寫C語言時常見的注意事項有哪些

    為什么學C語言?編寫C語言時常見的注意事項有哪些?C語言
    發表于 02-25 07:15

    VHDL語言中信號的不同形式設置

    摘要: 通過偶同位產生器邏輯功能的實現過程,介紹了VHDL語言中信號設置的不同方 式及注意事項,并給出了完整的程序代碼。 關鍵詞: VH
    發表于 10-06 08:48 ?1351次閱讀
    VHDL<b class='flag-5'>語言中</b>信號的不同形式設置

    C語言中的#和##的用法

    1. 前言 使用#把宏參數變為一個字符串,用##把兩宏參數貼合在起. 2. 用法 3. 注意事項
    的頭像 發表于 12-06 09:34 ?7.6w次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的#和##的<b class='flag-5'>用法</b>

    C語言中的typedef的用法

    在以前的學習中對于C語言中typedef和define的認識是,#define是宏,作用是簡單的替換,而typedef也是替換,只不過比define高級的是在替換的時候會進行語法檢查。但是后來
    發表于 01-13 13:36 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的<b class='flag-5'>用法</b>

    C語言中__attribute__ 關鍵字的用法

    嵌入式開發,離不開 C 語言C語言中有很多語法會直接或間接影響你代碼的質量,下面就來講講__attribute__ 關鍵字的
    發表于 10-19 09:06 ?1.3w次閱讀

    淺析C語言中的regiseter關鍵

    C語言中重要的關鍵字有很多,static const extern我們之前都講過,還有在面試
    的頭像 發表于 08-25 17:10 ?1173次閱讀
    淺析<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的regiseter<b class='flag-5'>關鍵</b>字
    百家乐变牌桌| 百家乐官网网上真钱赌场娱乐网规则 | 网上赌百家乐官网被抓应该怎么处理 | 百家乐官网开户送彩网址| 百家乐官网能战胜吗| 百家乐官网胜率被控制| 额济纳旗| 太阳城百家乐官网筹码租| 百家乐官网必胜密| 百家乐官网游戏大小| 柬埔寨百家乐官网的玩法技巧和规则| 木星百家乐官网的玩法技巧和规则| 百家乐官网一邱大师打法| 狮威百家乐官网的玩法技巧和规则| 百家乐注册赠金| 百家乐网上投注代理商| 环球百家乐的玩法技巧和规则| 威尼斯人娱乐网假吗| 威尼斯人娱乐场 澳门赌场| 大发888体育真人| 10BET娱乐城| 澳门百家乐官网娱乐城送彩金| 百家乐官网官| 做生意讲究风水| 网络百家乐公式打法| 太阳城申博娱乐城| 易胜博投注| 星河百家乐官网现金网| 缅甸百家乐官网龙虎斗| 百家乐保单详图| 百家乐百博| bet365里面的21点玩不得| 互博百家乐官网现金网| 什么叫百家乐官网的玩法技巧和规则| 百家乐游戏看路| 百家乐单机破解版| 财神娱乐城打不开| 优博家百家乐娱乐城| 澳门顶级赌场金鹰娱乐| 永利高百家乐官网网址| 玩百家乐官网怎么能赢呢|