c語言中static修飾函數(shù)的方法及代碼
1、靜態(tài)函數(shù)只能在聲明它的文件中可見,其他文件不能引用該函數(shù)。
2、不同的文件可以使用相同名字的靜態(tài)函數(shù),互不影響。
3、使用static聲明的函數(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):對‘fun1'未定義的引用
collect2: error: ld returned 1 exit status
*/
知識點擴充:
在C語言中,static的字面意思很容易把我們導(dǎo)入歧途,其實它的作用有三條。
介紹它的第一條也是最重要的一條:隱藏。
當(dāng)我們同時編譯多個文件時,所有未加static前綴的全局變量和函數(shù)都具有全局可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個源文件,一個是a.c,另一個是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;
}
程序的運行結(jié)果是:
A Hello
到此這篇關(guān)于c語言中static修飾函數(shù)的方法及代碼的文章就介紹到這了,更多相關(guān)c語言中static如何修飾函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Eclipse中C++連接mysql數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了Eclipse中C++連接mysql數(shù)據(jù)庫 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06
C++實現(xiàn)LeetCode(107.二叉樹層序遍歷之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(107.二叉樹層序遍歷之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

