c語言中static和extern的用法詳細(xì)解析
更新時間:2013年09月26日 09:20:48 作者:
以下是對c語言中static和extern的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
一,static和extern:
大工程下我們會碰到很多源文檔。
文檔a.c
復(fù)制代碼 代碼如下:
static int i; //只在a文檔中用
int j; //在工程里用
static void init() //只在a文檔中用
{
}
void callme() //在工程中用
{
static int sum;
}
上面的全局i變量和init()函數(shù)只能用在a.c文檔中,全局變量sum的作用域只在callme里。變量j和函數(shù)callme()的全局限擴(kuò)充到整個工程文檔。所以能夠在下面的b.c中用extern關(guān)鍵字調(diào)用。extern告訴編譯器這個變量或函數(shù)在其他文檔里已被定義了。
文檔b.c
復(fù)制代碼 代碼如下:
extern int j; //調(diào)用a文檔里的
extern void callme(); //調(diào)用a文檔里的
int main()
{
...
}
extern的另外用法是當(dāng)C和C++混合編程時假如c++調(diào)用的是c源文檔定義的函數(shù)或變量,那么要加extern來告訴編譯器用c方式命名函數(shù):
文檔A.cpp調(diào)用a.c里面的變量i和函數(shù)callme()
復(fù)制代碼 代碼如下:
extern "C" //在c++文檔里調(diào)用c文檔中的變量
{
int j;
void callme();
}
int main()
{
callme();
}
二,static法則:
A、若全局變量僅在單個C文檔中訪問,則能夠?qū)⑦@個變量修改為靜態(tài)全局變量,以降低模塊間的耦合度;
B、若全局變量僅由單個函數(shù)訪問,則能夠?qū)⑦@個變量改為該函數(shù)的靜態(tài)局部變量,以降低模塊間的耦合度;
C、設(shè)計(jì)和使用訪問動態(tài)全局變量、靜態(tài)全局變量、靜態(tài)局部變量的函數(shù)時,需要考慮重入問題;
相關(guān)文章
Matlab實(shí)現(xiàn)灰色預(yù)測的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)灰色預(yù)測,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以了解一下2022-05-05
純c語言優(yōu)雅地實(shí)現(xiàn)矩陣運(yùn)算庫的方法
本文主要介紹了純c語言優(yōu)雅地實(shí)現(xiàn)矩陣運(yùn)算庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

