C語言中extern的使用方法

下午修改的代碼編譯一直不過,提示重複定義,查找到緣由是對全局變量的使用沒有使用extern聲明,這裏再記錄一下extern的使用方法,加深一下記憶吧。函數

extern是一個關鍵字,它聲明瞭變量或函數(告訴編譯器你先別急着報錯,這個變量或函數在其餘地方定義了,你去其餘地方找找,要麼在這個文件的後面,要麼在引用的其餘文件中).net

函數的聲明

.c文件提供的接口會在.h中加上聲明,但基本不會顯示加上extern關鍵字,由於對於函數來說,沒有函數體,自己默認就是個聲明,加不加extern可有可無,執行時都會去找到函數定義的地方code

變量的聲明

對於變量就不同了,以下:blog

int a;                // 定義一個變量,不管在c仍是h文件中
extern int a;    // 聲明一個變量

在h文件中不加上extern關鍵字,一樣是聲明瞭一個(全局)變量,在h文件被屢次引用後,出現重複定義的錯誤,即便使用#ifdef包裹起來這個.h文件也沒法解決。接口

這篇文章寫得很清楚,參考: https://blog.csdn.net/csdnwei/article/details/51836182get

相關文章
相關標籤/搜索