c語(yǔ)言中static修飾函數(shù)的方法及代碼
1、靜態(tài)函數(shù)只能在聲明它的文件中可見,其他文件不能引用該函數(shù)。
2、不同的文件可以使用相同名字的靜態(tài)函數(shù),互不影響。
3、使用static聲明的函數(shù)不能被另一個(gè)文件引用。
實(shí)例
/* file1.c */ #include <stdio.h> static void fun(void) { printf("hello from fun.\n"); } int main(void) { fun(); fun1(); return 0; } /* file2.c */ #include <stdio.h> static void fun1(void) { printf("hello from static fun1.\n"); } /* 輸出: error:file1.c:(.text+0x20):對(duì)‘fun1'未定義的引用 collect2: error: ld returned 1 exit status */
知識(shí)點(diǎn)擴(kuò)充:
在C語(yǔ)言中,static的字面意思很容易把我們導(dǎo)入歧途,其實(shí)它的作用有三條。
介紹它的第一條也是最重要的一條:隱藏。
當(dāng)我們同時(shí)編譯多個(gè)文件時(shí),所有未加static前綴的全局變量和函數(shù)都具有全局可見性。為理解這句話,我舉例來說明。我們要同時(shí)編譯兩個(gè)源文件,一個(gè)是a.c,另一個(gè)是main.c。
下面是a.c的內(nèi)容
char a = 'A'; // global variable void msg() { printf("Hello\n"); }
下面是main.c的內(nèi)容
int main(void) { extern char a; // extern variable must be declared before use printf("%c ", a); (void)msg(); return 0; }
程序的運(yùn)行結(jié)果是:
A Hello
到此這篇關(guān)于c語(yǔ)言中static修飾函數(shù)的方法及代碼的文章就介紹到這了,更多相關(guān)c語(yǔ)言中static如何修飾函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 復(fù)制控制之復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)
所謂的“復(fù)制控制”即通過這三個(gè)成員函數(shù)控制對(duì)象復(fù)制的過程,本文主要介紹了C++ 復(fù)制控制之復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11C語(yǔ)言詳細(xì)實(shí)現(xiàn)猜拳游戲流程
在學(xué)習(xí)了循環(huán)、分支、和函數(shù)之后,可以寫一些簡(jiǎn)單的小游戲來給自己的編程之路增添一份樂趣。不僅提升了編碼能力,還可以邊學(xué)邊玩,簡(jiǎn)直妙哉妙哉2022-05-05Sublime Text 3 實(shí)現(xiàn)C語(yǔ)言代碼的編譯和運(yùn)行(示例講解)
下面小編就為大家?guī)硪黄猄ublime Text 3 實(shí)現(xiàn)C語(yǔ)言代碼的編譯和運(yùn)行(示例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09C++實(shí)現(xiàn)百度坐標(biāo)(BD09)及GCJ02與WGS84之間的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)百度坐標(biāo)(BD09)及GCJ02與WGS84之間的轉(zhuǎn)換的方法,文中的示例代碼講解詳細(xì),希望對(duì)大家有所幫助2023-03-03C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實(shí)例代碼
這篇文章主要介紹了C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-03-03