函数原型有以下用途 -
1) 它告诉函数将返回的数据的返回类型。
2)它告诉传递给函数的参数数量。
3) 它告诉每个传递的参数的数据类型。
4)它还告诉了将参数传递给函数的顺序。
因此,从本质上讲,函数原型指定了函数的输入/输出交错,即赋予函数什么以及期望从函数得到什么。
函数的原型也称为函数的签名。
如果没有指定函数原型怎么办?
在很多地方通常会询问以下类型的程序的输出。
如果没有指定函数原型,则行为特定于编译器实现的 C 标准(C90 或 C99)。直到 C90 标准,C 编译器将省略的函数原型的返回类型假定为 int。而编译器端的这种假设可能会导致未指定的程序行为。
后来的 C99 标准规定编译器不能再假定返回类型为 int。因此,C99 在函数原型的类型检查方面变得更加受限。但是为了使 C99 标准向后兼容,实际上,编译器会抛出警告,指出返回类型假定为 int。但他们继续编译。因此,程序员有责任确保假定的函数原型和实际的函数类型匹配。
为了避免所有这些 C 标准的实现细节,最好有一个函数原型。
int main()
{
foo();
getchar();
return 0;
}
void foo()
{
printf("foo called");
}