C语言中的静态函数的作用
生活随笔
收集整理的這篇文章主要介紹了
C语言中的静态函数的作用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載
在C語言中為什么要用靜態函數(static function)?
如果不用這個static關鍵字,好象沒有關系。那么,用了static以后,有什么作用呢?
我們知道,用了static的變量,叫做靜態變量,其意義是 ,該變量的值在下次調用時,還繼續保留前次調用時的值。
這里在一個函數前加上static關鍵字,其意思是這樣的:
原來static函數是“restrict visibility of the function”, 即該函數的作用域在另一個文件中是不可見的。
在C++中,函數的作用域一般是局限于其所定義的類中,雖靜態函數不常見。在C++,“a static member (function)is part of its class but not part of any object”。
舉例來說:
文件file1.c:
void func1( void )
{
}
extern void func2( void )
{
}
static void func3( void )
{
}
文件file2.c:
void func1( void );
void func2( void );
void func3( void );
int main( void )
{
? func1();?
? func2();?
? func3();?
? return 0;
}
在Cygwin下(或Linux下)用GCC編譯:
? $ gcc file1.c file2.c
。。。 file2.c:(.text+0x35): undefined reference to `_func3'
這個錯誤信息表示func3沒有定義,即它在file2.c中不可見。
在C語言中為什么要用靜態函數(static function)?
如果不用這個static關鍵字,好象沒有關系。那么,用了static以后,有什么作用呢?
我們知道,用了static的變量,叫做靜態變量,其意義是 ,該變量的值在下次調用時,還繼續保留前次調用時的值。
這里在一個函數前加上static關鍵字,其意思是這樣的:
原來static函數是“restrict visibility of the function”, 即該函數的作用域在另一個文件中是不可見的。
在C++中,函數的作用域一般是局限于其所定義的類中,雖靜態函數不常見。在C++,“a static member (function)is part of its class but not part of any object”。
舉例來說:
文件file1.c:
void func1( void )
{
}
extern void func2( void )
{
}
static void func3( void )
{
}
文件file2.c:
void func1( void );
void func2( void );
void func3( void );
int main( void )
{
? func1();?
? func2();?
? func3();?
? return 0;
}
在Cygwin下(或Linux下)用GCC編譯:
? $ gcc file1.c file2.c
。。。 file2.c:(.text+0x35): undefined reference to `_func3'
這個錯誤信息表示func3沒有定義,即它在file2.c中不可見。
總結
以上是生活随笔為你收集整理的C语言中的静态函数的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想计算机如何设置bios密码,联想bi
- 下一篇: SuperMap BIM+GIS技术白皮