程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言static和extern的用法

c語言static和extern的用法

編輯:關於C語言

大工程下我們會碰到很多源文檔。
   
    文檔a.c
   
    static int i; //只在a文檔中用
   
    int j;    //在工程裡用
   
    static void init()         //只在a文檔中用
   
    {
   
    }
   
    void callme()          //在工程中用
   
    {
   
    static int sum;
   
    }
   
    上面的全局i變量和init()函數只能用在a.c文檔中,全局變量sum的作用域只在callme裡。變量j和函數callme()的全局限擴充到整個工程文檔。所以能夠在下面的b.c中用extern關鍵字調用。extern告訴編譯器這個變量或函數在其他文檔裡已被定義了。
   
    文檔b.c
   
    extern int j;     //調用a文檔裡的
   
    extern void callme();  //調用a文檔裡的
   
    int main()
   
    {
   
    …
   
    }
   
    extern的另外用法是當C和C++混合編程時假如c++調用的是c源文檔定義的函數或變量,那麼要加extern來告訴編譯器用c方式命名函數:
   
    文檔A.cpp調用a.c裡面的變量i和函數callme()
   
    extern “C”  //在c++文檔裡調用c文檔中的變量
   
    {
   
    int j;
   
    void callme();
   
    }
   
    int main()
   
    {
   
    callme();
   
    }
   
    二,static法則:
   
    A、若全局變量僅在單個C文檔中訪問,則能夠將這個變量修改為靜態全局變量,tbw以降低模塊間的耦合度;
   
    B、若全局變量僅由單個函數訪問,則能夠將這個變量改為該函數的靜態局部變量,以降低模塊間的耦合度;
   
    C、設計和使用訪問動態全局變量、靜態全局變量、靜態局部變量的函數時,需要考慮重入問題;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved