C++內部函數和外部函數
函數本質上是全局的,因為一個函數要被另外的函數調用,但是,也可以指定函數只能被本文件調用,而不能被其他文件調用。根據函數能否被其他源文件調用,將函數區分為內部函數和外部函數。
內部函數
如果一個函數只能被本文件中其他函數所調用,它稱為內部函數。在定義內部函數時,在函數名和函數類型的前面加static。函數首部的一般格式為:
static 類型標識符 函數名(形參表);
如
static int fun(int a, int b);
內部函數又稱靜態(static)函數。使用內部函數,可以使函數只局限于所在文件。如果在不同的文件中有同名的內部函數,互不干擾。通常把只能由同一文件使用的函數和外部變量放在一個文件中,在它們前面都冠以static使之局部化,其他文件不能引用。
外部函數
在定義函數時,如果在函數首部的最左端冠以關鍵字extern,則表示此函數是外部函數,可供其他文件調用。如函數首部可以寫為:
extern int fun (int a, int b);
這樣,函數fun就可以為其他文件調用。如果在定義函數時省略extern,則默認為外部函數。本教程前面所用的函數都是外部函數。
在需要調用此函數的文件中,用extern聲明所用的函數是外部函數。
【例】輸入兩個整數,要求輸出其中的大者,用外部函數實現。
/*******file1.cpp(文件1)*******/#include <iostream>using namespace std;int main( ){ extern int max(int,int); //聲明在本函數中將要調用在其他文件中定義的max函數 int a,b; cin>>a>>b; cout<<max(a,b)<<endl; return 0;}/*******file2.cpp(文件2)*******/int max(int x,int y){ int z; z=x>y?x:y; return z;}運行情況如下: