基本解釋 extern可以置於變量或者函數前
以標示變量或者函數的定義在別的文件中
提示編譯器遇到此變量和函數時在其他模塊中尋找其定義
另外
extern也可用來進行鏈接指定
問題extern 變量
在一個源文件裡定義了一個數組
char a[
];
在另外一個文件裡用下列語句進行了聲明
extern char *a
請問這樣可以嗎?
答案與分析
)不可以程序運行時會告訴你非法訪問原因在於指向類型T的指針並不等價於類型T的數組extern char *a聲明的是一個指針變量而不是字符數組因此與實際的定義不同從而造成運行時非法訪問應該將聲明改為extern char a[ ]
)例子分析如下如果a[] = abcd則外部變量a=x (abcd的ASCII碼值)*a顯然沒有意義如下圖
顯然a指向的空間(x)沒有意義易出現非法內存訪問
)這提示我們在使用extern時候要嚴格對應聲明時的格式在實際編程中這樣的錯誤屢見不鮮
)extern用在變量聲明中常常有這樣一個作用你在*c文件中聲明了一個全局的變量這個全局的變量如果要被引用就放在*h中並用extern來聲明
[] []
From:http://tw.wingwit.com/Article/program/net/201311/15556.html