在做項目開發時,在一個單片機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。

注意:全局變量才能被外部引用,靜態變量和局部變量不行的。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45494瀏覽量
670252 -
C語言
+關注
關注
183文章
7644瀏覽量
145565 -
靜態變量
+關注
關注
0文章
13瀏覽量
6880 -
extern
+關注
關注
0文章
7瀏覽量
3185
發布評論請先 登錄
相關推薦
熱點推薦
C語言中不建議使用的關鍵詞
我們在學校學習或者有參加過C語言培訓的話,應該都聽說過“不建議使用goto語句”。但是,一般不會有人告訴你為什么不建議使用goto語句,類似于這種存在但不建議使用的關鍵詞還有很多。
發表于 09-08 14:18
?1990次閱讀
VHDL語言中信號的不同形式設置
摘要: 通過一個偶同位產生器邏輯功能的實現過程,介紹了VHDL語言中信號設置的不同方 式及注意事項,并給出了完整的程序代碼。 關鍵詞: VH
發表于 10-06 08:48
?1637次閱讀
C語言中的指針到底是什么?詳細資料介紹和使用代碼免費下載
好了,今天以我個人的角度來深度剖析一下C語言中關于指針的用法以及注意事項,曾經我也是被指針坑得不要不要的,當然現在依然還是再被指針坑,因為指
發表于 07-26 17:36
?2次下載
C語言中的typedef的用法
在以前的學習中對于C語言中typedef和define的認識是,#define是宏,作用是簡單的替換,而typedef也是替換,只不過比define高級的是在替換的時候會進行語法檢查。但是后來
發表于 01-13 13:36
?0次下載
C語言中__attribute__ 關鍵字的用法
嵌入式開發,離不開 C 語言,C語言中有很多語法會直接或間接影響你代碼的質量,下面就來講講__attribute__ 關鍵字的
發表于 10-19 09:06
?1.5w次閱讀
C語言中關鍵詞extern用法的一個注意事項
評論