在編寫C語言的函數時,有幾個要點需要我們牢記,因為它們影響到函數的效率和可用性。
4.5.1 參數和通用函數
通用函數是指能夠被用在各種情況下,或者是可被許多不同程序員使用的函數。我們不應該把通用函數建立在全局變量上(不應該在通用函數中使用全局變量)。函數所需要的所有數據都應該用參數傳遞(在個別難以這樣做的情況下,可以使用靜態變量)。使用參數傳遞,
除了有助於函數能用在多種情況下之外,還能提高函數代碼的可讀性。不用全局變量,可以使得函數減少因副作用而導致錯誤的可能性。
4.5.2 效率
函數是C語言的基本構件。對於編寫簡單程序之外的所有程序來說,函數是必不可少的。
但在一些特定的應用中,應當消除函數,而采用內嵌代碼。內嵌代碼是指一個函數的語句中不含函數調用語句。僅當執行速度是很關鍵的場合下,才用內嵌代碼而不用函數。
有兩個原因使得內嵌代碼的執行速度比函數快。首先,調用需要花費時間;其次,如果有參數需要傳遞,就要把它們放在堆棧中,這也要用時間。在幾乎所有的應用中,執行時間上的這些微小開銷是微不足道的。不過當時間開銷至關重要時,使用內嵌代碼消除函數調用,
可以把每次函數調用的開銷節省下來。下面的兩個程序都是打印從1到1 0的數的平方。由於函數調用需要花費時間,所以內嵌代碼版本運行的比另一個要快。