extern,外面的、外來的意思。那它有什么作用呢?舉個例子:假設你在大街上看到一個黑皮膚綠眼睛紅頭發的美女(外星人?)或者帥哥。你的第一反應就是這人不是國產的。extern 就相當于他們的這些區別于中國人的特性。
extern 可以置于變量或者函數前,以標示變量或者函數的定義在別的文件中,下面的代碼用到的這些變量或函數是外來的,不是本文件定義的,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。就好比在本文件中給這些外來的變量或函數帶了頂帽子,告訴本文件中所有代碼,這些家伙不是土著。
那你想想extern 修飾的變量或函數是定義還是聲明?看列子:
extern 可以置于變量或者函數前,以標示變量或者函數的定義在別的文件中,下面的代碼用到的這些變量或函數是外來的,不是本文件定義的,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。就好比在本文件中給這些外來的變量或函數帶了頂帽子,告訴本文件中所有代碼,這些家伙不是土著。
那你想想extern 修飾的變量或函數是定義還是聲明?看列子:
- c 文件中定義;
- c 文件中用extern 修飾:
int i = 10; extern int i;//寫成i = 10;行嗎?
void fun(void) extern void fun(void);//兩個void 可否省略?
{
? ?//code
} - h 文件中定義;
- c 文件中用extern 修飾:
int j = 1; extern double j;//這樣行嗎?為什么?
int k = 2; j = 3.0;//這樣行嗎?為什么?