这不是关于语言的特定问题,而是更多关于编程的问题。这个问题是在我和一个朋友就“函数原型”开始争论之后提出的,最近我从我的C ++课程中学到了这一点。我向他提到,原型是必须在代码开头创建的函数标头,因此,编译器在进入实际函数之前会在运行时分配一些空间。然后,我们开始讨论是否其他不使用函数原型的编程语言(如Java或python)(就我们而言)实际上是否具有类似于C ++的系统,只是它们自己处理而不是自己处理让用户创建它们。
所以我们很好奇地知道,到底什么是函数原型?它们仅对C / C ++负责,还是其他编程语言使用它们?作为未来的程序员,我是否需要进一步开发?谢谢您的帮助!
关于C和C ++,单词“ prototype”是指特定的声明语法。
在最早的C版本中,函数定义写为
int func( arg1, arg2, arg3 ) // no types in argument list, just identifiers
int arg1;
double arg2;
char *arg3;
{
// function body
}
声明写为
int func( ); // no argument list
函数参数列表仅包含标识符,没有类型信息-单独提供。函数声明不包括参数,仅包括返回类型。
引入了C ++,后来C采纳了原型语法的概念,其中类型信息包含在两个定义的参数列表中:
int func( int arg1, double arg2, char *arg3 )
{
// function body
}
和声明
int func( int, double, char * );
这使编译器可以检查函数调用中参数的数量和类型,并在参数不匹配时发出诊断,而不必等到运行时才找出问题所在。
虽然仍然支持旧式函数声明和定义语法,但不应将其用于新代码开发-我们几乎到了“原型”一词有点多余的地步,因为原型语法是规范,而不是规范例外。
静态类型的语言(例如Fortran和Pascal和Ada)都具有单独的函数声明,但它们没有将这些声明称为原型。同样,对于C语言,“原型”是指函数声明和定义的特定样式,而不仅仅是其本身的声明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句