函式本質上是全域性的,但可以限定函式能否被別的檔案所引用。當乙個源程式由多個原始檔組成時,c語言根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。 1
內部函式
如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。
定義乙個內部函式,只需在函式型別前再加乙個
「static」
關鍵字即可,如下所示:
static
函式型別
函式名(函式引數表)
關鍵字「static」
,譯成中文就是
「靜態的
」,所以內部函式又稱靜態函式。但此處
「static」
的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。 2
外部函式
外部函式的定義:在定義函式時,如果沒有加關鍵字
「static」
,或冠以關鍵字
「extern」
,表示此函式是外部函式:
[extern]
函式型別
函式名(函式引數表)
呼叫外部函式時,需要對其進行說明:
[extern]
函式型別
函式名(引數型別表
)[,函式名
2(引數型別表
2)……];例
2外部函式應用。(1
)檔案mainf.c
main()
(2)檔案subf1.c
extern void input(……)
(3)檔案
subf2.c
extern void process(……)
(4)檔案
subf3.c……
extern void output(……)
例3陣列排序
----
簡單選擇排序
file1.c
main()
file2.c
void sort(int
array,int
n) }
}多個源程式檔案的編譯和連線 (
1)一般過程
編輯各原始檔→建立
project
(專案)檔案
→設定專案名稱
→編譯、連線,執行,檢視結果。(2
)建立project
(專案)檔案
用編輯原始檔相同的方法,建立乙個擴充套件名為
.prj
的專案檔案:該檔案中僅包括將被編譯、連線的各源檔名,一行乙個,其副檔名
.c可以預設;檔名的順序,僅影響編譯的順序,與執行無關。
注意:如果有某個(些)原始檔不在當前目錄下,則應在檔名前冠以路徑。 (
3)設定專案名稱
開啟選單,選取
project
/project name
,輸入專案檔名即可。(4
)編譯、連線,執行,檢視結果
與單個原始檔相同。編譯產生的目標檔案,以及連線產生的可執行檔案,它們的主檔名,均與專案檔案的主檔名相同。
注意:當前專案檔案除錯完畢後,應選取
project
/clear project
,將其專案名稱從
「project name」
中清除(清除後為空)。否則,編譯、連線和執行的,始終是該專案檔案!(5
)關於錯誤跟蹤
預設時,僅跟蹤當前乙個源程式檔案。如果希望自動跟蹤專案中的所有原始檔,則應將
options
/environment
/message tracking
開關置為
「all files 」
:連續按回車鍵,直至
「all files」
出現為止。此時,滾動訊息視窗中的錯誤資訊時,系統會自動載入相應的原始檔到編輯視窗中。
也可關閉跟蹤(將
「message tracking」
置為「off」)
。此時,只要定位於感興趣的錯誤資訊上,然後回車,系統也會自動將相應原始檔載入到編輯視窗中。
C 內部函式和外部函式
函式本質上是全域性的,因為乙個函式要被另外的函式呼叫,但是,也可以指定函式只能被本檔案呼叫,而不能被其他檔案呼叫。根據函式能否被其他原始檔呼叫,將函式區分為內部函式和外部函式。如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。函式首部...
C 內部函式和外部函式
函式本質上是全域性的,因為乙個函式要被另外的函式呼叫,但是,也可以指定函式只能被本檔案呼叫,而不能被其他檔案呼叫。根據函式能否被其他原始檔呼叫,將函式區分為內部函式和外部函式。如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。函式首部...
內部函式和外部函式
內部函式 如果乙個函式只能被本檔案中其它函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。內部函式又稱靜態函式。使用內部函式,可以使函式只侷限於所在檔案,如果在不同的檔案中有同名的內部函式,互不干擾。這樣不同的人可以分別編寫不同的函式,而不必擔心所用函式是否會與其...