做個c小實驗,向判斷乙個動態庫對外暴露的介面函式能否同時被兩個程式呼叫,實驗結果是可以的。然後試一下把那個介面函式寫成靜態函式再次嘗試,編譯出現報錯。
c語言中的static函式:
內部函式和外部函式
函式一旦定義後就可被其它函式呼叫。但當乙個源程式由多個原始檔組成時,在乙個原始檔中定義的函式能否被其它原始檔中的函式呼叫呢。為此,c語言又把函式分為兩類:
一、內部函式
如果在乙個原始檔中定義的函式只能被本檔案中的函式呼叫,而不能被同一源程式其它檔案中的函式呼叫, 這種函式稱為內部函
數。定義內部函式的一般形式是: static 型別說明符 函式名(形參表) 。
例如:static int f(int a,int b) 內部函式也稱為靜態函式。但此處靜態static 的含義已不是指儲存方式,而是指對函式的呼叫範圍只侷限於本檔案。 因此在不同的原始檔中定義同名的靜態函式不會引起混淆。
二、外部函式
外部函式在整個源程式中都有效,其定義的一般形式為: extern 型別說明符 函式名(形參表) 例如:
extern int f(int a,int b)如在函式定義中沒有說明extern或static則隱含為extern。在乙個原始檔的函式中呼叫其它原始檔中定義的外部函式時,應用extern說明被調函式為外部函式。例如:
f1.c (原始檔一)
main()
f2.c (原始檔二)
extern int f1(int i); /外部函式定義/
C語言的靜態函式
當乙個源程式由多個原始檔組成時,根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。1 內部函式 又稱靜態函式 如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。定義乙個內部函式,只需在函式型別前再加乙個 static...
C語言的靜態函式
當乙個源程式由多個原始檔組成時,根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。1 內部函式 又稱靜態函式 如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。定義乙個內部函式,只需在函式型別前再加乙個 static...
c語言靜態變數和靜態函式
static c語言 c語言程式可以看成由一系列外部物件構成,這些外部物件可能是變數或函式。而內部變數是指定義在函式內部的函式引數及變數。外部變數定義在函式之外,因此可以在許多函式中使用。由於c語言不允許在乙個函式中定義其它函式,因此函式本身只能是 外部的 由於c語言 是以檔案為單位來組織的,在乙個...