static和extern的用法总结
生活随笔
收集整理的這篇文章主要介紹了
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頭文件。
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的用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql分区表mycat_MySQL
- 下一篇: abaqus编写本构方程vumat_ab