→ tinlans:這東西主要是用來符合識別字在使用前必須宣告的規則而已。 05/13 10:34
→ MOONRAKER:不在使用前宣告,則函數的參數個數概以第一次呼叫時的 05/13 11:22
→ MOONRAKER:個數為準,且形態通通自動設為int。如果你寫一個函數 05/13 11:23
→ MOONRAKER:sq(double x){return x*x;}又不用prototype那你可以期待 05/13 11:23
→ MOONRAKER:會有很幽默的事情發生… 05/13 11:24
不是的,如果不宣告函式即使用,以 C90 的標準是 compiler 會幫你宣告成
「int f()」的型式,括號內沒放任何參數的意思是它接受任意個數、任意型
別的參數,並回傳 int。就算你參數亂傳一通,compiler 照樣很高興地編過
去。
不宣告就呼叫函式真的不是什麼好事,compiler 無法幫你檢查參數型別與個
數是否正確,因此 C++ 和 C99 規格都把這個功能去掉了,意味著你的 code
無法在新的 compiler 上過關。拜託,地球只有一個,別再污染環境。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
※ 編輯: littleshan 來自: 219.87.151.2 (05/13 13:27)
→ MOONRAKER:只有在參加IOCCC時可用 :* 05/13 15:49