天天看點

C語言extern關鍵詞—最會帶帽子的關鍵字

extern,外面的、外來的意思。那它有什麼作用呢?舉個例子:假設你在大街上看到一個黑皮膚綠眼睛紅頭發的美女(外星人?)或者帥哥。你的第一反應就是這人不是國産的。extern 就相當于他們的這些差別于中國人的特性。

extern 可以置于變量或者函數前,以标示變量或者函數的定義在别的檔案中,下面的代碼用到的這些變量或函數是外來的,不是本檔案定義的,提示編譯器遇到此變量和函數時在其他子產品中尋找其定義。就好比在本檔案中給這些外來的變量或函數帶了頂帽子,告訴本檔案中所有代碼,這些家夥不是土著。

那你想想extern 修飾的變量或函數是定義還是聲明?看列子:

  1. c 檔案中定義;
  2. c 檔案中用extern 修飾:

    int i = 10; extern int i;//寫成i = 10;行嗎?

    void fun(void) extern void fun(void);//兩個void 可否省略?

    {

       //code

    }

  3. h 檔案中定義;
  4. int j = 1; extern double j;//這樣行嗎?為什麼?

    int k = 2; j = 3.0;//這樣行嗎?為什麼?

至于extern“C”的用法,一般認為屬于C++的範疇,這裡就先不讨論。當然關于extern的讨論還遠沒有結束,在指針與數組那一章,你還會和它親密接觸的。

繼續閱讀