作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: [问题] 写副函式不写Function prototype会怎样吗?
时间Wed May 13 13:26:25 2009
※ 引述《s8752199 (s8752199)》之铭言:
: 如题
: 刚试了简单的副函式没出现什麽问题
: 请问会怎样吗
: ?
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.31.187
1F:→ tinlans:这东西主要是用来符合识别字在使用前必须宣告的规则而已。 05/13 10:34
2F:→ MOONRAKER:不在使用前宣告,则函数的参数个数概以第一次呼叫时的 05/13 11:22
3F:→ MOONRAKER:个数为准,且形态通通自动设为int。如果你写一个函数 05/13 11:23
4F:→ MOONRAKER:sq(double x){return x*x;}又不用prototype那你可以期待 05/13 11:23
5F:→ 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)
6F:→ MOONRAKER:只有在参加IOCCC时可用 :* 05/13 15:49