为什么要使用函数原型?

时间:2014-02-10 06:45:58

标签: c function-prototypes

为什么在C中使用函数原型?这似乎有点多余,因为我们已经在定义中声明了函数名,参数类型和返回类型。在定义函数或用于优化之前是否必须声明原型?

3 个答案:

答案 0 :(得分:11)

一般来说,您不需要显式声明函数,因为定义它们也会声明它们。以下是您需要的两种情况:

  1. 该功能的定义在外部模块中。

    例如,如果函数在foo.c中定义,但您想从bar.c调用它,则需要在bar.c中声明函数或者包含它的文件(通常是foo.h)。

  2. 函数的定义在调用之后出现。

    例如,如果您有两个相互调用的函数,则需要在第一个函数定义之前声明第二个函数。

答案 1 :(得分:1)

虽然函数定义指定函数的作用,但函数原型可以被认为是指定其接口。

创建库接口: 通过将函数原型放在头文件中,可以指定库的接口。

答案 2 :(得分:1)

通过函数声明,编译器可以检查参数的一致使用和返回值,并且即使函数未在此模块中实现,也可以编译代码。 如果该函数仅在相应的模块中声明但未实现,则链接将关闭此间隙,而不是编译器。

它类似于声明外部变量。如果你定义它们,它们的内存将被多次分配。这就是为什么你永远不应该在h文件中定义变量,而是在那里声明它们。包含h文件会导致多次内存分配。