精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

C語言中關(guān)鍵詞extern用法的一個(gè)注意事項(xiàng)

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

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

什么原因?

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

圖片

怎么修改?

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

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

圖片

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

圖片

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

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

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628392
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134088
  • 靜態(tài)變量
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6635
  • extern
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    2933
收藏 人收藏

    評論

    相關(guān)推薦

    C語言中不建議使用的關(guān)鍵詞

    我們在學(xué)校學(xué)習(xí)或者有參加過C語言培訓(xùn)的話,應(yīng)該都聽說過“不建議使用goto語句”。但是,般不會(huì)有人告訴你為什么不建議使用goto語句,類似于這種存在但不建議使用的關(guān)鍵詞還有很多。
    發(fā)表于 09-08 14:18 ?1271次閱讀

    C語言for循環(huán)的用法注意事項(xiàng)

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

    高速電路中過孔設(shè)計(jì)注意事項(xiàng)

    ,總結(jié)出高速PCb過孔設(shè)計(jì)中的注意事項(xiàng)關(guān)鍵詞:過孔;寄生電容;寄生電感;非穿導(dǎo)孔技術(shù)[hide][/hide]
    發(fā)表于 08-16 13:33

    [討論]提高網(wǎng)站關(guān)鍵詞排名的28個(gè)SEO小技巧

    提高網(wǎng)站關(guān)鍵詞排名的28個(gè)SEO小技巧關(guān)鍵詞位置、密度、處理 URL中出現(xiàn)關(guān)鍵詞(英文) 網(wǎng)頁標(biāo)題中出現(xiàn)關(guān)鍵詞(1-3
    發(fā)表于 12-01 17:08

    關(guān)鍵詞優(yōu)化有哪些實(shí)用的方法

    在這里就來和大家起來分享下。關(guān)鍵詞應(yīng)該怎么去優(yōu)化,這是我們的個(gè)思考,然后就要想對應(yīng)的方法去做優(yōu)化,通常我們做
    發(fā)表于 08-11 01:19

    VHDL語言中信號設(shè)置的不同方式,有什么注意事項(xiàng)

    并行同時(shí)語句命令主要有哪幾種表達(dá)方式?VHDL語言中信號設(shè)置的不同方式及注意事項(xiàng)
    發(fā)表于 04-08 06:26

    介紹一下關(guān)鍵extern用法

    學(xué)單片機(jī)C語言定要熟悉關(guān)鍵字的用法,本文介紹一下關(guān)鍵ex
    發(fā)表于 07-15 06:38

    C語言中的數(shù)據(jù)類型有哪幾種?const有哪些用法

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

    c語言和單片機(jī)遇見的小注意事項(xiàng)

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

    編寫C語言時(shí)常見的注意事項(xiàng)有哪些

    為什么學(xué)C語言?編寫C語言時(shí)常見的注意事項(xiàng)有哪些?C語言
    發(fā)表于 02-25 07:15

    VHDL語言中信號的不同形式設(shè)置

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

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

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

    C語言中的typedef的用法

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

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

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

    淺析C語言中的regiseter關(guān)鍵

    C語言中重要的關(guān)鍵字有很多,static const extern我們之前都講過,還有個(gè)在面試
    的頭像 發(fā)表于 08-25 17:10 ?1006次閱讀
    淺析<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的regiseter<b class='flag-5'>關(guān)鍵</b>字