重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
定義在當前翻譯單元(一般是.c文件包含了頭文件之后的結果)外,以extern前綴聲明的函數對于當前翻譯單元來說是外部函數。它提示編譯器,假定這個函數的定義存在,但不在當前翻譯單元中。因此若語法正確,編譯器不對此函數產生標識符未定義的錯誤。鏈接器會檢查編譯器得到的若干目標文件以及靜態庫文件中的包括函數在內的符號,如果不滿足唯一定義性則產生錯誤,鏈接失敗,不會產生最終目標文件(如.exe可執行文件)。
公司主營業務:網站設計制作、成都做網站、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯公司推出徐匯免費做網站回饋大家。
對于加static前綴聲明的函數,編譯器認為定義在當前翻譯單元或庫中且不會被其它翻譯單元引用(也就是說函數僅對當前源文件有效)。相對于extern(外部)函數,這些函數可以稱為internal(內部)函數。
而不加extern或static聲明的函數,默認為定義在當前翻譯單元中,且其它翻譯單元可以用extern函數聲明引用這個函數(對鏈接器可見)。
對于非extern函數,如果編譯器在當前翻譯單元中找不到函數的定義,則產生標識符未定義的編譯錯誤,編譯失敗。
====
[原創回答團]
c語言庫函數很多,我知道的有250多個。可能更多。當然不可能全部記住了。不過他們都是分類的,實現不同的功能。大體了解他們的功能用的時候查就行了,況且庫函數用法很簡單。能記住當然好
就是你寫這C代碼的那個文件
例如你在t1.c文件里寫了一個static int xxx()的函數,這個函數就叫內部函數,只能被t1.c這里的其它函數調用
內部函數跟外部函數的區別在于:一個文件中定義的函數能否被其它文件調用。能被調用的函數在前面加extern(一般省略),而不能被調用的加static(不能省略),通常函數本質上是全局的,也就是外部的可調用的。
我們通常調用的#include本質上就是一些外部函數的集合,由于在一個文件中的函數要調用另外一個文件的函數,要求在開始聲明一下,為了省略這些聲明,我們引用include命令。
函數是數學名詞,代數式中,凡相關的兩數X與Y,對于每個X值,都只有一個Y的對應值。這種對應關系就表示Y是X的函數。
函數(function)的定義通常分為傳統定義和近代定義,函數的兩個定義本質是相同的,只是敘述概念的出發點不同,傳統定義是從運動變化的觀點出發,而近代定義是從集合、映射的觀點出發。
函數的近代定義是給定一個數集A,假設其中的元素為x,對A中的元素x施加對應法則f,記作f(x),得到另一數集B,假設B中的元素為y,則y與x之間的等量關系可以用y=f(x)表示,函數概念含有三個要素:定義域A、值域B和對應法則f。其中核心是對應法則f,它是函數關系的本質特征。
函數,最早由中國清朝數學家李善蘭翻譯,出于其著作《代數學》。之所以這么翻譯,他給出的原因是“凡此變數中函彼變數者,則此為彼之函數”,也即函數指一個量隨著另一個量的變化而變化,或者說一個量。
內部函數(用static關鍵字說明)是作用域只限于說明它的源文件的函數。作用域指的是函數或變量的可見性。如果一個函數或變量在說明它的源文件以外也是可見的,那么就稱它具有全局或外部作用域;如果一個函數或變量只在說明它的源文件中是可見的,那么就稱它具有局部或內部作用域。
函數庫和語言綁定,c庫,c++庫等,是最基本的庫。一般是國際標準。
比如printf,scanf就是c庫函數