定義一個全局變量,想在多個文件中使用,代碼如下:
//var.h
extern int var ;
//var.c
#include"var.h"
int var = 10;
//otherA.c
#include"var.h"
//otherB.c
#include"var.h"
//otherC.c
#include"var.h"
只能在一個文件裡面賦初值,否則鏈接出錯。對於數組通過這種方式是沒問題的,但如果是一個全局變量,則會有提示報警。
正確的使用方式是:
//var.h
static int var ;
//otherA.c
#include"var.h"
//otherB.c
#include"var.h"
//otherC.c
#include"var.h"
全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。
把局部變量改變為靜態變量後是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量後是改變了它的作用域,限制了它的使用范圍。