內部函數(shù)跟外部函數(shù)的區(qū)別在于:一個文件中定義的函數(shù)能否被其它文件調用。能被調用的函數(shù)在前面加extern(一般省略),而不能被調用的加static(不能省略),通常函數(shù)本質上是全局的,也就是外部的可調用的。

為內江等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及內江網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、網(wǎng)站建設、內江網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
我們通常調用的#include本質上就是一些外部函數(shù)的集合,由于在一個文件中的函數(shù)要調用另外一個文件的函數(shù),要求在開始聲明一下,為了省略這些聲明,我們引用include命令。
定義在當前翻譯單元(一般是.c文件包含了頭文件之后的結果)外,以extern前綴聲明的函數(shù)對于當前翻譯單元來說是外部函數(shù)。它提示編譯器,假定這個函數(shù)的定義存在,但不在當前翻譯單元中。因此若語法正確,編譯器不對此函數(shù)產生標識符未定義的錯誤。鏈接器會檢查編譯器得到的若干目標文件以及靜態(tài)庫文件中的包括函數(shù)在內的符號,如果不滿足唯一定義性則產生錯誤,鏈接失敗,不會產生最終目標文件(如.exe可執(zhí)行文件)。
對于加static前綴聲明的函數(shù),編譯器認為定義在當前翻譯單元或庫中且不會被其它翻譯單元引用(也就是說函數(shù)僅對當前源文件有效)。相對于extern(外部)函數(shù),這些函數(shù)可以稱為internal(內部)函數(shù)。
而不加extern或static聲明的函數(shù),默認為定義在當前翻譯單元中,且其它翻譯單元可以用extern函數(shù)聲明引用這個函數(shù)(對鏈接器可見)。
對于非extern函數(shù),如果編譯器在當前翻譯單元中找不到函數(shù)的定義,則產生標識符未定義的編譯錯誤,編譯失敗。
====
[原創(chuàng)回答團]
當一個源程序由多個源文件組成時,C語言根據(jù)函數(shù)能否被其它源文件中的函數(shù)調用,將函數(shù)分為內部函數(shù)和外部函數(shù)。
如果在一個源文件中定義的函數(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ù)寫在另一個文件里.
來自百度百科
C語言外部函數(shù)是一種可在自身所處的源文件及其他源文件中都能被調用的函數(shù)。外部函數(shù)的作用域是整個源程序。
函數(shù)調用
編輯
1、在定義函數(shù)時,若在函數(shù)首部的最左端加關鍵字extern,則表示此函數(shù)是外部調用,可被其他文件調用,函數(shù)首部可以為
Extern int fun(int a,int b);
C語言規(guī)定,定義函數(shù)時省略了extern則隱含為外部函數(shù),可被其他文件調用
2、在需要調用函數(shù)的文件中,用extern對函數(shù)聲明,表示該函數(shù)是在其他文件中定義的外部函數(shù)
所以外函數(shù)只是一種引用方式,大項目多人分開寫,可能會有多個文件,最后要整合在一起用。那被引用的文件中函數(shù)相對與引用者,就是外部函數(shù)。
分享題目:c語言外部函數(shù)怎么理解,c語言所有的函數(shù)都是外部函數(shù)嗎
網(wǎng)站路徑:http://chinadenli.net/article34/hsjcse.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、ChatGPT、虛擬主機、域名注冊、服務器托管、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)