有關函數聲明的注意點

在C語言中,函數聲明稱爲函數原型(function prototype)。使用函數原型是ANSI C的一個重要特點。它的作用主要是利用它在程序的編譯階段對調用函數的合法性進行全面檢查。

說明:
<1> 以前的C版本的函數聲明方式不是採用函數原型,而只是聲明函數名和函數類型。
如:float add(); 不包括參數類型和參數個數。系統不檢查參數類型和參數個數。新版本也兼容這種用法,但不提倡這種用法,因爲它未進行全面的檢查。

<2> 實際上,如果在函數調用前,沒有對函數作聲明,則編譯系統會把第一次遇到的該函數形式(函數定義或函數調用)作爲函數的聲明,並將函數類型默認爲int型。如一個max函數,調用之前沒有進行函數聲明,編譯時首先遇到的函數形式是函數調用”max(a, b)”,由於對原型的處理是不考慮參數名的,因此係統將max()加上int作爲函數聲明,即int max(); 因此不少教材說,如果函數類型爲整型,可以在函數調用前不必作函數聲明。但是使用這種方法時,系統無法對參數的類型做檢查。或調用函數時參數使用不當,在編譯時也不會報錯。因此,爲了程序清晰和安全,建議都加以聲明爲好。

<3> 如果被調用函數的定義出現在主調函數之前,可以不必加以聲明。因爲編譯系統已經先知道了已定義的函數類型,會根據函數首部提供的信息對函數的調用作正確性檢查。

<4> 如果已在所有函數定義之前,在函數的外部已做了函數聲明,則在各個主調用函數中不必對所調用的函數再作聲明。

發佈了95 篇原創文章 · 獲贊 36 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章