C中的原型设计

时间:2018-03-09 19:57:54

标签: c prototyping

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

double aireRectangle(double largeur, double hauteur) {
    return largeur * hauteur;
}

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

他们告诉我们必须添加“;”在aireRectangle之后,它适用于我...我不明白为什么它适合我。

你知道原因吗?

2 个答案:

答案 0 :(得分:1)

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

如果你想在许多c文件中调用你的函数,还有很多案例,在这种情况下,最好的方法是在某个头文件中定义一个函数原型,并在某个c文件中定义它,然后包含该头文件无论你想在哪里使用(或调用)该功能。

答案 1 :(得分:0)

它对您有用,因为您首先要定义功能aireRectangle,然后先然后定义。在您的情况下,编译器已经在调用之前对其进行了“了解”。

如果在使用后定义一个函数,则需要在其顶部放置原型:

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);

此规则并不严格,一些编译器对此规则宽容。

相关问题