大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数原型申明就是在main函数前面需要申明一下,否则main函数调用这个函数时会找不到,原型申明可以不定义具体的函数体,然后可以把函数体的具体部分放在main函数后面再来单独定义,这样程序整体上更整洁,要不然自定义函数都在main函数的前面就定义了,那代码一多还得找主函数。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了新华免费建站欢迎大家使用!
函数原型作为声明,作用是提示编译器,作为标识符的函数名,在声明之后或外部编译单元/库文件存在定义,以抑制编译器遇到这个标识符时产生标识符未定义的编译错误,同时标明出这个函数的参数传递及出入栈顺序等必要的进出要素,函数的定义则始终以原型为基准进行实现。原型作为语法技术的提出,出发点就在于此,利用它可以方便地定义互相递归的函数,以及引用外部库文件的符号。
函数原型能告诉编译程序一个函数将接受什么样的参数,将返回什么样的返回值,这样编译程序就能检查对函数的调用是否正确,是否存在错误的类型转换。例如,现有以下函数原型;
int
some_func(int,char·,long);
编译程序就会检查所有对该函数的引用(包括该函数的定义)是否使用了三个参数并且返回一个int类型的值。如果编译程序发现函数的调用或定义与函数原型不匹配,编译程序就会报告出错或警告消息。例如,对上述函数原型来说,当编译程序检查以下语句时,就会报告出错或警告消息:
x
=
some_func(l);
/*
not
enough
arguments
passed
*/
x
=
somc_funcC*HELLOl",
1,
"DUDE:");
/*
wrong
type
of
arguments
used
*/
x
=
aome_funcd,
sir,
2879,
"T");
/*
too
many
arguments
passed
*/
下例中的函数调用同样是不正确的,因为函数some_func()的返回值不是一个long*类型的值。
lValue=some_func(1,str,2879);
/*some_rune()returns
anint,not
a
long*
*/
同样,编译程序还能检查函数的定义(或函数体)是否与函数原型匹配。例如,当编译程序检查以下函数定义时,就会报告出错或警告消息:
int
some_func(char
*string,longlValue,int
iValue)
/*
wrong
order
Of
{
parameters
*/
......
}
总之,在源文件中说明函数原型提供了一种检查函数是否被正确引用的机制。目前许多流行的编译程序都会检查被引用的函数的原型是否已在源文件中说明过,如果没有,就会发出警告消息。