日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

static和extern的用法总结

發布時間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 static和extern的用法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
static用法見: 1、http://www.cnblogs.com/yezhenhan/archive/2011/10/31/2229724.html 2、http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_5297.html
extern用法: 1、http://blog.csdn.net/cameracanon/article/details/4061419 2、http://blog.csdn.net/liu1028701143/article/details/7359381
簡單地理解static: (1)如果static放在頭文件中的話,被2個不同的cpp文件分別引入時,那么這兩個cpp都有一個自己的這個static變量,并且相互不受影響。 (2)static用來修飾全局變量時,只能被本文件引用,不會被其他文件訪問和修改,其他文件可以定義相同名字的變量; (3)static用來修飾函數時,只能被本文件引用,不會被其他文件訪問和修改,其他文件可以定義相同名字的函數; (4)static用來修飾局部變量(即某個函數內部的變量)時,退出函數時,該變量仍保留著相應的值; 例如: void count(); int main() { ? ?int i; ? ?for (i = 1; i <= 3; i++) ? ? ?count(); ? ?return 0; } void count() { ? ?static?num = 0; ? ? ?num++; ? ? ?printf(" I have been called %d",num,"timesn"); }
輸出結果為: I have been called 1 times. I have been called 2 times. I have been called 3 times.

簡單地理解extern: (1)extern可以置于變量或者函數前,以標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。 (2)extern用在變量聲明中常常有這樣一個作用,你在*.c文件中定義聲明了一個全局的變量,這個全局的變量如果要被其他x.c文件引用,就放在*.h中并用extern來引用聲明,然后再x.c中包含該*.h頭文件。

(3)(個人規則)函數的定義聲明帶不帶extern其實都表示同一個意思,即不帶時默認是extern的,所以一般定義聲明時不帶extern。

(4)(個人規則)函數的引用聲明必須帶關鍵字extern,暗示這個函數可能在別的源文件里定義,沒有其它作用。

(5)如果定義函數(函數的具體實現)的c/cpp文件在對應的頭文件中聲明了所定義的函數(頭文件中該函數前可帶可不帶extern),那么在其他c/cpp文件中要使用這些函數,只需要包含這個頭文件即可。如果你不想包含頭文件,那么你要在其他c/cpp中使用extern聲明該函數(僅僅表明這個函數可能在別的源文件里定義,沒有其它作用)。如下所述:

first.h頭文件內部:

#ifndef Function

#define Function

void count();

……

#endif

?

first.c文件內部:

#include "first.h"//count()函數的聲明

……

void count()

{

……

}

?

//如果不想包括頭文件,second.c文件內部:

extern void count();//表明是其他文件里面的函數

?

//包含頭文件,second.c文件內部

#include "fisrt.h"//這個就包含了 void count()函數的聲明


總結

以上是生活随笔為你收集整理的static和extern的用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。