static和extern的用法总结
extern用法: 1、http://blog.csdn.net/cameracanon/article/details/4061419 2、http://blog.csdn.net/liu1028701143/article/details/7359381
簡單地理解static: (1)如果static放在頭文件中的話,被2個(gè)不同的cpp文件分別引入時(shí),那么這兩個(gè)cpp都有一個(gè)自己的這個(gè)static變量,并且相互不受影響。 (2)static用來修飾全局變量時(shí),只能被本文件引用,不會(huì)被其他文件訪問和修改,其他文件可以定義相同名字的變量; (3)static用來修飾函數(shù)時(shí),只能被本文件引用,不會(huì)被其他文件訪問和修改,其他文件可以定義相同名字的函數(shù); (4)static用來修飾局部變量(即某個(gè)函數(shù)內(nèi)部的變量)時(shí),退出函數(shù)時(shí),該變量仍保留著相應(yīng)的值; 例如: 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"); }
輸出結(jié)果為: I have been called 1 times. I have been called 2 times. I have been called 3 times.
簡單地理解extern: (1)extern可以置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。 (2)extern用在變量聲明中常常有這樣一個(gè)作用,你在*.c文件中定義聲明了一個(gè)全局的變量,這個(gè)全局的變量如果要被其他x.c文件引用,就放在*.h中并用extern來引用聲明,然后再x.c中包含該*.h頭文件。
(3)(個(gè)人規(guī)則)函數(shù)的定義聲明帶不帶extern其實(shí)都表示同一個(gè)意思,即不帶時(shí)默認(rèn)是extern的,所以一般定義聲明時(shí)不帶extern。
(4)(個(gè)人規(guī)則)函數(shù)的引用聲明必須帶關(guān)鍵字extern,暗示這個(gè)函數(shù)可能在別的源文件里定義,沒有其它作用。
(5)如果定義函數(shù)(函數(shù)的具體實(shí)現(xiàn))的c/cpp文件在對應(yīng)的頭文件中聲明了所定義的函數(shù)(頭文件中該函數(shù)前可帶可不帶extern),那么在其他c/cpp文件中要使用這些函數(shù),只需要包含這個(gè)頭文件即可。如果你不想包含頭文件,那么你要在其他c/cpp中使用extern聲明該函數(shù)(僅僅表明這個(gè)函數(shù)可能在別的源文件里定義,沒有其它作用)。如下所述:
first.h頭文件內(nèi)部:
#ifndef Function
#define Function
void count();
……
#endif
?
first.c文件內(nèi)部:
#include "first.h"//count()函數(shù)的聲明
……
void count()
{
……
}
?
//如果不想包括頭文件,second.c文件內(nèi)部:
extern void count();//表明是其他文件里面的函數(shù)
?
//包含頭文件,second.c文件內(nèi)部
#include "fisrt.h"//這個(gè)就包含了 void count()函數(shù)的聲明
總結(jié)
以上是生活随笔為你收集整理的static和extern的用法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql分区表mycat_MySQL
- 下一篇: abaqus编写本构方程vumat_ab