c語言extern詳解

(1)變量


extern int a;//聲明一個全局變量a
int a; //定義一個全局變量a

extern int a =0 ;//定義一個全局變量a 並給初值。
int a =0;//定義一個全局變量a,並給初值,

        定義只能出現在一處。不管是int a;還是extern int a=0;還是int a=0;都只能出現一次,而那個extern int a可以出現很多次。當你要引用一個全局變量的時候,你就要聲明,extern int a;這時候extern不能省略,因爲省略了,就變成int a;這是一個定義,不是聲明。

(2)函數
       
由於函數的定義和聲明是有區別的,定義函數要有函數體,聲明函數沒有函數體,所以函數定義和聲明時都可以將extern省略掉。
    比如:

int fun(void)
{
return 0;
}

定義一個全局函數

int fun(void);
我們對它做了個聲明,然後後面就可以用了
加不加extern都一樣
我們也可以把對fun的聲明 放在一個頭文件裏,最後變成這樣

int fun(void);//函數聲明,所以省略了extern,完整些是extern int fun(void);

一個要使用你的fun()的程序,把這個頭文件包含進去,就可以使用這個fun()函數了。
但是,對應的,如果是這個程序要使用全局變量,那麼要extern 某某變量;不然就成了定義了。

總結下:

對變量而言,如果你想在本源文件中使用另一個源文件的變量,就需要在使用前用extern聲明該變量,或者在頭文件中用extern聲明該變量;

對函數而言,如果你想在本源文件中使用另一個源文件的函數,就需要在使用前用聲明該變量,聲明函數加不加extern都沒關係,所以在頭文件中函數可以不用加extern。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章