C語言靜態函式不能被其他檔案呼叫

2021-10-14 01:41:42 字數 732 閱讀 1848

做個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語言 是以檔案為單位來組織的,在乙個...