首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >功能原型在C++中是强制性的吗?

功能原型在C++中是强制性的吗?
EN

Stack Overflow用户
提问于 2017-07-09 16:57:15
回答 4查看 924关注 0票数 0

我的意思是,即使在函数调用之前定义了函数,它是否需要有一个函数原型?我尝试了一个带有定义b4调用的程序,它是worked.but in C++,由Herbert设计,它说C++需要完整的函数,prototyping.so很困惑。那么,C++真的需要完整的功能原型吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-09 17:53:34

考虑到这个问题,我假设你处于初级阶段。首先,你应该开始学习一本更好的书。

将编译器视为读取程序并将其转换为机器语言的智能人员。当编译器开始编译您的程序时,它可能会遇到一个函数调用,例如:foo();,它必须使控件跳转到函数的地址,以便在运行期间执行所需的指令,但是编译器不知道函数是什么或函数在哪里!为编译器提供引用可以帮助编译器编译代码。

原型是这样的引用,您也可以在任何函数调用之前定义一个函数,并且它仍然可以工作。

除了技术上的原因,原型使代码在大型项目中更加清晰。

否则,您就会在函数定义中滚动,而不知道这些函数正在做什么。记住,你也像一个人类编译器!

--我注意到了一个常见的错误:,人们通常会反对这个想法,并在上面定义他们的功能。虽然,当从函数调用另一个函数时,可能会出现问题。

代码语言:javascript
复制
int function_1()
{
        return function_2();
}

int function_2()
{
        return function_1();
}

在这里,没有功能定义的安排是可行的。原型要好得多。

假设:显然还有更多的语句来打破没完没了的循环和返回值,这只是为了说明这个概念。

票数 0
EN

Stack Overflow用户

发布于 2017-07-09 16:59:39

函数定义也是函数声明(即原型)。因此,如果在调用之前定义函数,那么一切都将是hunkydory。我强烈建议不要尝试从Herb的作品中学习C++。

票数 6
EN

Stack Overflow用户

发布于 2017-07-09 18:18:50

函数原型或函数接口是一个函数的声明,它指定函数的名称和类型签名(数据类型、参数类型和返回类型),但忽略了函数体。 函数原型仅仅指定了它的(函数)接口(I/O)。 函数的原型也称为函数的签名。

如果在实际函数定义之前必须对代码部分中的函数进行调用或引用,则函数原型是强制性的。

一个函数原型可以被“识别”或从其定义中得到,因此,如果在函数的实际定义之前没有调用该函数,则声明该函数原型并不是强制性的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44998857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档