函数原型具有以下目的–
1)告知函数将返回的数据的返回类型。
2)告诉传递给函数的参数数量。
3)告诉每个传递的参数的数据类型。
4)它还告诉参数传递给函数的顺序。
因此从本质上讲, 函数原型指定函数的输入/输出隔行扫描, 即为函数提供什么以及对函数期望什么。
函数的原型也称为函数的签名。
如果没有指定函数原型怎么办?
通常在许多地方要求以下程序的输出。
int main()
{
foo();
getchar ();
return 0;
}
void foo()
{
printf ( "foo called" );
}
如果未指定函数原型, 则该行为特定于编译器实现的C标准(C90或C99)。直到C90标准, C编译器都将省略的函数原型的返回类型假定为int。并且在编译器端的这种假设可能导致未指定的程序行为。
后来的C99标准指定编译器不能再将返回类型假定为int。因此, C99在函数原型的类型检查中变得更加严格。但是为了使C99标准向后兼容, 实际上, 编译器会发出警告, 指出返回类型假定为int。但是他们继续进行编译。因此, 程序员有责任确保假定的函数原型与实际的函数类型匹配。
为了避免所有这些C标准的实现细节, 最好具有函数原型。
评论前必须登录!
注册