在做項目開發(fā)時,在一個單片機C語言程序(用keil開發(fā))中,如果有兩個C文件,在其中一個C文件(設為a文件)定義了一個全局變量v,并在此文件里的程序段里修改此變量,在另外一個C文件(設為b文件)里用外部變量(extern)的方法引用此變量,并讀取變量v,但是,在b中讀取時結(jié)果變量v出錯,出現(xiàn)亂值。
什么原因?
v在b文件里作為外部變量,被認為分配的地址在其他地方,在b文件里只是讀取沒有寫入,實際就沒有分配內(nèi)存地址,從而出錯。

怎么修改?
方法1,在b文件中定義此變量v,在a文件中用外部變量的方式引用變量v,在a文件里修改變量v,在b文件中回讀變量v,結(jié)果正常。
這樣,在b文件里定義了變量v,分配了內(nèi)存地址,在a文件中引用外部變量v并進行了寫入操作,也分配了內(nèi)存地址,所以不出錯。

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

注意:全局變量才能被外部引用,靜態(tài)變量和局部變量不行的。
-
單片機
+關注
關注
6076文章
45495瀏覽量
670459 -
C語言
+關注
關注
183文章
7644瀏覽量
145614 -
靜態(tài)變量
+關注
關注
0文章
13瀏覽量
6880 -
extern
+關注
關注
0文章
7瀏覽量
3185
發(fā)布評論請先 登錄
C語言中不建議使用的關鍵詞
[討論]提高網(wǎng)站關鍵詞排名的28個SEO小技巧
關鍵詞優(yōu)化有哪些實用的方法
C語言中的數(shù)據(jù)類型有哪幾種?const有哪些用法?
VHDL語言中信號的不同形式設置
C語言中的指針到底是什么?詳細資料介紹和使用代碼免費下載
C語言中的typedef的用法
C語言中關鍵詞extern用法的一個注意事項
評論