91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

C語言變量申明和定義簡析

大家好,我是電源漫談,很高興和各位一起分享我的59原創文章,喜歡和支持我的工程師,一定記得給我點贊、收藏、分享。

在C程序的書寫中,往往會分為多個子文件,所以同一個變量不免會在多個C源程序文件中去訪問使用,本文就這一基礎問題做一些梳理。

如何在不同C文件使用同一個變量?

當你在一個C的源文件中定義了一個變量(而不是在頭文件中定義變量),如果你想在另一個C源文件中去使用這個變量,那么此時你就可以使用extern來申明。

一般來說,比較推薦的方式是,定義一個頭文件,來放置所有的相關申明,在任何一個想訪問這個變量的C源文件中去包含這個頭文件。

這里我們需要重點澄清兩個定義,一個是變量定義,它是指編譯器安排空間存儲這個變量。另一個是變量申明,它是指讓編譯器知道其數據類型及它的存在,但是并不會定義它的存儲空間。

實際示例說明

這里我們來舉一個示例,我們定義一個易失變量volatile int start,需要在程序中任何一個位置可以訪問它,因此,我們在main.c中去定義這個變量,如圖1所示。

圖1 變量的定義示例

如前所述,我們創建一個頭文件,在這個頭文件中去做這個變量start的申明,這里需要注意,在申明時需要包含所有定義時的限定符,這時就可以在任何想使用這個變量的C源文件中,通過包含頭文件來使用這個變量了,如圖2,3所示。

圖2 在其它C文件中使用變量

如何避免重復定義和申明?

圖3 在頭文件中進行變量申明

當我們在頭文件中,申明變量時,為了避免不同C源文件使用同一個變量時,編譯器會重復定義這個變量,我們需要使用如圖3所示的guard條件。

圖4 在變量原始定義C文件中引用申明頭文件

一般的,建議在定義這個變量的C源文件中也要增加這個頭文件申明,這樣做的好處是讓C文件中的變量定義重新檢查,看看它是否和頭文件中的申明一致,如果不一致,編譯器會給出警告,用戶就會處理。

簡要總結

不建議在頭文件中定義變量,因為當C文件進行編譯時,會將它用到的頭文件原樣放置在C文件中,如果對于一個文件用到這個變量時,就會出現重復的變量定義錯誤。所以,一般建議在C源文件中定義變量,但是在頭文件中用extern進行變量申明。

這里需要注意的是,對于宏定義和結構體或者聯合體等類型,可以在頭文件中定義,因為他們只是存在于編譯階段,不會涉及到文件鏈接。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 5
收藏 5
關注 439
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 东至县| 柯坪县| 赣榆县| 巨鹿县| 潞城市| 阿拉尔市| 达尔| 定西市| 瑞金市| 北票市| 休宁县| 绥宁县| 乌鲁木齐市| 忻城县| 安远县| 卓资县| 胶州市| 西平县| 邢台市| 循化| 祁连县| 固安县| 镇巴县| 泸州市| 新丰县| 临猗县| 泽州县| 嵊州市| 娄底市| 吉林市| 长泰县| 丰台区| 长武县| 东兰县| 北安市| 武陟县| 上饶市| 佛冈县| 万盛区| 高雄县| 共和县|