首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中的原型开发

C++中的原型开发
EN

Stack Overflow用户
提问于 2018-03-10 03:57:54
回答 2查看 76关注 0票数 0

我正在学习教程中的C语言。他们谈到了原型化,但对我来说,以下代码是有效的:

代码语言:javascript
复制
double aireRectangle(double largeur, double hauteur) {
    return largeur * hauteur;
}

int main() {
    return aireRectangle(10, 30);
}

他们告诉我们,我们必须在aireRectangle后面添加一个";“,这行得通,但对我也行……我不明白为什么它对我有效。

你知道原因吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-13 04:29:52

让我们来了解一下在这种情况下编译是如何工作的。编译时,编译器从文件的开头(或顶部)开始编译代码。现在,在到达主程序之前的这段代码中,编译器已经知道在同一个文件中定义了一个函数aireRectangle。现在,尝试在main函数下面定义函数aireRectangle。在这种情况下,您将得到一个错误,指出未定义引用到aireRectangle。在这种情况下,当函数aireRectangle在主函数体内时,编译器不知道它是什么。但是如果您在main函数之前定义了一个函数原型,那么当编译到达main函数时,它就会知道这个文件中的某个地方定义了一个名为aireRectangle的函数。所以它不会产生任何错误。在这种情况下,您将需要一个函数原型。

还有更多的情况,比如如果你想在许多c文件中调用你的函数,在这种情况下,最好的方法是在一些头文件中定义一个函数原型,并在一些c文件中定义它的定义,然后在你想要使用(或调用)该函数的任何地方包括那个头文件。

票数 1
EN

Stack Overflow用户

发布于 2019-02-21 13:29:03

它适用于您,因为您首先定义函数aireRectangle,然后使用它定义。在本例中,编译器在调用之前就已经‘知道’了函数

如果你在使用之后定义了一个函数,那么你需要把它的原型放在上面:

代码语言:javascript
复制
int main() {
    return aireRectangle(10, 30);    // You are using function before defining
}

double aireRectangle(double largeur, double hauteur) {     // definition is later
    return largeur * hauteur;
}

在上面,函数的定义是在它的使用之后。因此,在上述情况下,您需要在顶部有一个原型。这是因为编译器可能“知道”稍后会定义一个函数。

你需要在上面有一个原型:double aireRectangle(double largeur, double hauteur);

这条规则并不严格,一些编译器对这条规则很宽松。

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

https://stackoverflow.com/questions/49201262

复制
相关文章

相似问题

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