#1
|
||||
|
||||
C語言問題請教
引用:
那該如何寫? 我有試著把myfunc(y)的y拿掉變成myfunc(),但編譯器編到 int myfunc(int i) 又說 [Error] conflicting types for 'myfunc' please help, thanks. |
#2
|
|||
|
|||
第三行應改為 int myfunc(int);
|
#4
|
|||
|
|||
第三行是宣告一個函數的"原型",
意思是告訴編譯程式說:我底下有一個函數, 名稱是 myfunc, 而此函數需要傳進一個 int 值 編譯程式處理到第三行時, 雖然還不知道 myfunc 函數裏的程式碼, 但已經知道存在著 myfunc 這個函數, 以及它需要的參數。 而當編譯程式處理到 int z = myfunc(y); 這一行時, 就會知道這一行程式是在呼叫"底下才會出現的"函數, 而 y 也是 int, 符合 myfunc 的定義, 因此編譯程式就能判斷這一行是正確的語法 函數原型的宣告, 旨在讓編譯程式預先知道函數的名稱與參數等等, 好進行後續的處理 因此, 函數原型的宣告, 必須符合後面函數的實體, 否則編譯就會出問題 原來的宣告 myfunc(void) 跟後來的函數實體 myfunc(int i) 不同, 當然編譯不過 |