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

C中的static與extern的用法講解

編輯:關於C語言

一、static和extern:
    大工程下我們會碰到很多源文件。

文件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文件中訪問,則可以將這個變量修改為靜態全局變量,以降低模塊間的耦合度;
    B、若全局變量僅由單個函數訪問,則可以將這個變量改為該函數的靜態局部變量,以降低模塊間的耦合度;
    C、設計和使用訪問動態全局變量、靜態全局變量、靜態局部變量的函數時,需要考慮重入問題;

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