
如果不用這個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 )
{
?
?
?
?
}
在Cygwin下(或Linux下)用GCC編譯:
?
。。。 file2.c:(.text+0x35): undefined reference to `_func3'
這個錯誤信息表示func3沒有定義,即它在file2.c中不可見。