C說話static潤飾函數具體解析。本站提示廣大學習愛好者:(C說話static潤飾函數具體解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話static潤飾函數具體解析正文
在C說話中,static的字面意思很輕易把我們導入邪路,其實它的感化有三條。
引見它的第一條也是最主要的一條:隱蔽。
當我們同時編譯多個文件時,一切未加static前綴的全局變量和函數都具有全局可見性。為懂得這句話,我舉例來講明。我們要同時編譯兩個源文件,一個是a.c,另外一個是main.c。
上面是a.c的內容
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
上面是main.c的內容
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
法式的運轉成果是:
A Hello
你能夠會問:為何在a.c中界說的全局變量a和函數msg能在main.c中應用?後面說過,一切未加static前綴的全局變量和函數都具有全局可見性,其它的源文件也能拜訪。此例中,a是全局變量,msg是函數,而且都沒有加static前綴,是以關於別的的源文件main.c是可見的。
假如加了static,就會對其它源文件隱蔽。例如在a和msg的界說前加上static,main.c就看不到它們了。應用這一特征可以在分歧的文件中界說同名函數和同名變量,而不用擔憂定名抵觸。Static可以用作函數和變量的前綴,關於函數來說,static的感化僅限於隱蔽