當一個源程序由多個源文件組成時,C語言根據(jù)函數(shù)能否被其它源文件中的函數(shù)調用,將函數(shù)分為內部函數(shù)和外部函數(shù)。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比徽州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式徽州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋徽州地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
如果在一個源文件中定義的函數(shù),只能被本文件中的函數(shù)調用,而不能被同一程序其它文件中的函數(shù)調用,這種函數(shù)稱為內部函數(shù)。
定義一個內部函數(shù),只需在函數(shù)類型前再加一個“static”關鍵字即可,如下所示:
static 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表){……}
在定義函數(shù)時,如果沒有加關鍵字“static”,或冠以關鍵字“extern”,表示此函數(shù)是外部函數(shù):
[extern] 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表){……}
外部函數(shù)原型聲明要有extern
簡單說,外部函數(shù)是用戶自定義函數(shù),該函數(shù)寫在另一個文件里.
有兩種理解.(1)庫函數(shù)是C語言的內部函數(shù)或自帶函數(shù),外部函數(shù)即程序員自定函數(shù).
(2)凡加寫了extern 的函數(shù)是外部函數(shù).
第一種理解好懂:
C語言的內部函數(shù)指的是C語言自帶的函數(shù),無論是動態(tài)鏈接的或靜態(tài)鏈接的. 這些函數(shù)通過C語言的頭文件定義了.
例如, sin(),cos()等數(shù)學函數(shù),在math.h中定義了,輸入輸出函數(shù) printf(),fgetc()在stdio.h中定義了,時間函數(shù)表time(),ctime()等在time.h中定義了.還有許多其他內部函數(shù).編程時,只要用#include 庫名.h寫在編程頭部,程序中就可調用.
自定義函數(shù),就是用戶自己寫的函數(shù).
第二種凡加寫了extern 的函數(shù)是外部函數(shù):
自定義函數(shù)可以與程序的main()寫在同一個文件中,也可以寫在另一個文件中,這時你可能還另寫自己的頭文件或者寫extern....,告訴編譯器,main中用到的某某函數(shù)是"外部函數(shù)".
例如,main()在a.c中,自定義函數(shù)my_func()在a2.c中
a.c內容:
#include stdio.h
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 內容:
float my_func(float a)
{
return a;
}
編譯:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [鏈接成a.exe]
運行:
a.exe
得
result=2.000000
extern float my_func() 是外部說明,告訴編譯,main()里的my_func是外部函數(shù),要通過鏈接(.obj)得到.
如果把my_func寫在a.c里:
#include stdio.h
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函數(shù).
編譯:
cl a.c [得a.exe]
運行:
a.exe
得
result=2.000000
兩個可以放在同一目錄下,也可以放到不同的目錄下,前提是你在主函數(shù)文件中應當包含相應的頭文件或C文件(路徑寫對應,寫完整就好)。
外部函數(shù)文件根據(jù)所寫函數(shù)需要將對應頭文件包含進來,stdio.h作為一個標準輸入輸出文件,只要你該外部文件內涉及到輸入輸出等操作,就是必須要包含進來的。
希望對你有所幫助!
當前文章:c語言什么是外部函數(shù)調用 c語言內部函數(shù)外部函數(shù)
地址分享:http://chinadenli.net/article24/hhjsje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、網(wǎng)站策劃、小程序開發(fā)、網(wǎng)站內鏈、網(wǎng)頁設計公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)