作者khoguan (Khoguan Phuann)
看板C_and_CPP
标题[FAQ集] 函式语法:int max(a, b) int a, b; 好奇怪
时间Thu Sep 1 23:26:20 2005
ptt.cc BBS 站 C_and_CPP 板 FAQ (0.1版)
函式语法
Q: 有些 C 程式的函式写成 int max(a, b) int a, b; { /* ... */ }
好奇怪。
A:
int max(a, b)
int a, b;
{
return a > b ? a : b;
}
这种写法是旧风格(old-style)的函式定义写法,它所相应的函式宣告必须
写成 int max(); 括弧里面要空白。这种写法的缺点就是,那个括弧内空白
的宣告方式,是表示参数的个数及型别未指定,也就是说在我们呼叫该函式
时,编译器不会根据函式的宣告帮我们做参数个数及型别的检查,是一种不
安全的旧用法。所以应该改用新风格的宣告及定义方式:
int max(int a, int b); /* 宣告时参数名字 a 和 b 可以省略 */
/* ...... */
int max(int a, int b) /* 这是定义 */
{
return a > b ? a : b;
}
由於旧风格的写法仍然非常顽强的存在着,以至於虽然 C89 已将它视为过
时用法,到了 C99 的时代,仍然容许这种写法。但是除非特殊因素,例如
要维护旧程式,或是要在只支援旧风格的编译器下编译,我们自己写程式
时,务请使用新风格的写法。
-----------------------------------
敬请指正错误,或提出更合适的答案。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.208.167
1F:推 renderer:推 61.228.216.206 09/01
※ 编辑: khoguan 来自: 220.130.208.167 (09/02 00:01)
2F:→ allall:收到!!!! 61.224.77.210 09/02
3F:推 tomap41017:朝圣 10/04 12:42
4F:推 PcGrek:推~,解惑了。 10/04 15:32