C 內部函式和外部函式

2021-07-26 16:07:57 字數 1653 閱讀 4036

函式本質上是全域性的,因為乙個函式要被另外的函式呼叫,但是,也可以指定函式只能被本檔案呼叫,而不能被其他檔案呼叫。根據函式能否被其他原始檔呼叫,將函式區分為內部函式和外部函式。

如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。函式首部的一般格式為:

static 型別識別符號 函式名(形參表);

如static int fun(int a, int b);

內部函式又稱靜態(static)函式。使用內部函式,可以使函式只侷限於所在檔案。如果在不同的檔案中有同名的內部函式,互不干擾。通常把只能由同一檔案使用的函式和外部變數放在乙個檔案中,在它們前面都冠以static使之區域性化,其他檔案不能引用。

在定義函式時,如果在函式首部的最左端冠以關鍵字extern,則表示此函式是外部函式,可供其他檔案呼叫。如函式首部可以寫為:

extern int fun (int a, int b);

這樣,函式fun就可以為其他檔案呼叫。如果在定義函式時省略extern,則預設為外部函式。本教程前面所用的函式都是外部函式。

在需要呼叫此函式的檔案中,用extern宣告所用的函式是外部函式。

【例4.15】輸入兩個整數,要求輸出其中的大者,用外部函式實現。

/*******file1.cpp(檔案1)*******/

#include

using

namespace std;

intmain()

/*******file2.cpp(檔案2)*******/

intmax

(int x,

int y)

運**況如下:

7 -34↙

7在計算機上執行乙個含多檔案的程式時,需要建立乙個專案檔案(project file),在該專案檔案中包含程式的各個檔案。詳細情況請檢視:vc6.0使用教程。

通過此例可知:使用extern宣告就能夠在乙個檔案中呼叫其他檔案中定義的函式,或者說把該函式的作用域擴充套件到本檔案。extern宣告的形式就是在函式原型基礎上加關鍵字extern。由於函式在本質上是外部的,在程式中經常要呼叫其他檔案中的外部函式,為方便程式設計,c++允許在宣告函式時省寫extern。例4.15程式main函式中的函式宣告可寫成:

int max(int, int);

這就是我們多次用過的函式原型。由此可以進一步理解函式原型的作用。用函式原型能夠把函式的作用域擴充套件到定義該函式的檔案之外(不必使用extern)。只要在使用該函式的每乙個檔案中包含該函式的函式原型即可。函式原型通知編譯系統:該函式在本檔案中稍後定義,或在另一檔案中定義。

利用函式原型擴充套件函式作用域最常見的例子是#include命令的應用。在#include命令所指定的標頭檔案中包含有呼叫庫函式時所需的資訊。例如,在程式中需要呼叫sin函式,但三角函式並不是由使用者在本檔案中定義的,而是存放在數學函式庫中的。按以上的介紹,必須在本檔案中寫出sin函式的原型,否則無法呼叫sin函式。sin函式的原型是:

double sin(double x);

本來應該由程式設計者在呼叫庫函式時先從手冊中查出所用的庫函式的原型,並在程式中一一寫出來,但這顯然是麻煩而困難的。為減少程式設計者的困難,在標頭檔案cmath中包括了所有數學函式的原型和其他有關資訊,使用者只需用以下#include命令:

#include

即可。這時,在該檔案中就能合法地呼叫各數學庫函式了。

C 內部函式和外部函式

函式本質上是全域性的,因為乙個函式要被另外的函式呼叫,但是,也可以指定函式只能被本檔案呼叫,而不能被其他檔案呼叫。根據函式能否被其他原始檔呼叫,將函式區分為內部函式和外部函式。如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。函式首部...

內部函式和外部函式

內部函式 如果乙個函式只能被本檔案中其它函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。內部函式又稱靜態函式。使用內部函式,可以使函式只侷限於所在檔案,如果在不同的檔案中有同名的內部函式,互不干擾。這樣不同的人可以分別編寫不同的函式,而不必擔心所用函式是否會與其...

內部函式和外部函式

一 內部函式 乙個函式只能被本檔案中其他函式呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static.static int fun int a,int b 內部函式又稱為靜態函式。通常把只能由同一檔案使用的函式和外部變數放在乙個檔案中,在它們前面都冠以static使之區域性化,...