error: too few arguments to function 'imax'在練習《C Primer Plus》範例時,編譯器報出「函數 imax 參數過少」。這是典型的函數宣告與調用不匹配錯誤。
// 宣告:需要兩個 int 參數
int imax(int a, int b);
// 調用:只傳了一個參數
int m = imax(5); // ❌ 缺少第二個參數
int imax(int, int),調用必須提供兩個 int 實參int m = imax(5, 10); // ✅ 補齊第二個參數
main 之前或標頭檔中宣告所有函數原型,確保編譯器可見-Wall -Wextra -Werror,將隱式宣告、參數不匹配升級為錯誤在 C89 前,若調用前未見宣告,編譯器會隱式假設函數返回 int、參數不定。這極易導致執行期災難(如 float 當 int 傳遞)。現代 C (C99+) 強制要求函數原型前置,請務必遵守。
這個簡單錯誤提醒我們:函數契約(原型)必須與調用嚴格一致,這是靜態類型語言保證正確性的第一道防線。