int ShowNumber(); // 聲明缺少參數
int main() {
int number[10];
for (int i = 0; i < 10; i++) number[i] = i;
for (int i = 0; i < 10; i++)
ShowNumber(number[i]); // 調用傳 int
return 0;
}
int ShowNumber(int Member) { // 定義有參數
printf("傳入的值是:%d\n", Member);
return 0;
}
warning: implicit declaration of function 'ShowNumber'
error: conflicting types for 'ShowNumber' (前置聲明隱式 int ShowNumber() vs 定義 int ShowNumber(int))
**函數前置聲明未包含參數列表**。C 語言中:
int ShowNumber(); 表示「接受未知數量/類型參數」 (舊式 K&R 風格),非「無參數」。int,編譯器假設參數匹配。int ShowNumber(int),類型衝突報錯。// 正確聲明 (原型)
int ShowNumber(int Member); // 或 int ShowNumber(int);
int main() { /* ... */ }
int ShowNumber(int Member) { /* ... */ }
返回類型 函數名(參數類型列表);utils.h → #include "utils.h" 統一管理。gcc -Wall -Wextra -Werror 將隱式聲明升級為錯誤。void:void init(void); 明確語意。void func(int arr[]); // 最常用,語義清晰
void func(int *arr); // 本質相同,指針算術
void func(int arr[10]); // 長度提示僅供文檔,編譯器忽略
調用時均傳 arr (退化為指針),函數內**無法獲取數組長度**,需額外傳遞 size 參數。
**函數聲明必須包含完整參數類型列表**。缺少參數聲明導致隱式 int 衝突,修正後即可正常編譯運行。