3 回答
TA贡献1856条经验 获得超11个赞
所有其他答案都是正确的,但只是为了完成
函数以下列方式声明:
return-type function-name(parameter-list,...) { body... }return-type是函数返回的变量类型。这不能是数组类型或函数类型。如果没有给出,则假定为int。
function-name是函数的名称。
parameter-list是函数用逗号分隔的参数列表。如果没有给出参数,那么该函数不带任何参数,应该用空的括号或用关键字void定义。如果参数列表中的变量前面没有变量类型,则假定为int。数组和函数不会传递给函数,但会自动转换为指针。如果列表以省略号(,...)结束,则没有设定数量的参数。注意:标头stdarg.h可用于在使用省略号时访问参数。
再次为了完整起见。从C11规范6:11:6(第179页)
的使用功能与空括号声明符(未原型格式参数类型说明符)是一个过时特征。
TA贡献2051条经验 获得超10个赞
在C中func()
意味着您可以传递任意数量的参数。如果你不需要参数,那么你必须声明为func(void)
。您传递给函数的类型,如果未指定,则默认为int
。
TA贡献1836条经验 获得超5个赞
int func();
从没有C标准的日子开始,这是一个过时的功能声明,即K&R C的日子(1989年之前,第一个“ANSI C”标准发布的那一年)。
请记住,K&R C中没有原型,关键字void
尚未发明。您所能做的就是告诉编译器函数的返回类型。K&R C中的空参数列表表示“未指定但固定”的参数数量。固定意味着您必须每次都使用相同数量的args 调用该函数(与可变参数函数相反,例如printf
,每次调用的数字和类型可能不同)。
许多编译器会诊断出这个结构; 特别gcc -Wstrict-prototypes
会告诉你“函数声明不是原型”,这是一个现场,因为它看起来像一个原型(特别是如果你被C ++中毒!),但事实并非如此。这是一种旧式的K&R C返回型声明。
经验法则:永远不要将空参数列表声明留空,用于int func(void)
具体。这将K&R返回类型声明转换为适当的C89原型。编译器很高兴,开发人员很高兴,静态的跳棋很开心。那些被C ++误导的人可能会感到畏缩,因为他们在尝试锻炼外语时需要输入额外的字符:-)
- 3 回答
- 0 关注
- 637 浏览
添加回答
举报