函数头和不同文件中的实现C.

时间:2011-04-07 03:25:31

标签: c function header definition

如何为函数提供头文件以及在不同文件中实现该函数?另外,你如何在另一个文件中使用main并调用此函数? 优点是这个函数将是一个可以重用的独立组件,对吗?

3 个答案:

答案 0 :(得分:5)

最好通过一个例子来说明。

假设我们想要一个函数来查找整数的立方体。

您可以在cube.c

中使用定义(实施)
int cube( int x ) {
  return x * x * x;
}

然后我们将函数声明放在另一个文件中。按照惯例,这是在header filecube.h中完成的。

int cube( int x );

我们现在可以通过使用driver.c指令(它是C预处理器的一部分)从其他地方#include调用该函数。

#include "cube.h"

int main() {
  int c = cube( 10 );
  ...
}

最后,您需要将每个源文件编译成目标文件,然后链接这些文件以获取可执行文件。

使用 gcc ,例如

$ gcc -c cube.c                 #this produces a file named 'cube.o'
$ gcc -c driver.c               #idem for 'driver.o'
$ gcc -o driver driver.c cube.c #produces your executable, 'driver'

答案 1 :(得分:1)

实际上,您可以在头文件中实现任何函数以获得更好的性能(例如,在实现库时),因为长时间没有引用特定对象(实际上它不会编译它)。 顺便说一句,即使这样,你有单独的接口和实现;) 当然,您将在头文件中包含gurads以避免“多重定义”错误。

答案 2 :(得分:0)

在C / C ++中,非内联函数只应定义一次。如果你把功能定义 在头文件中,当头文件包含多次时,您将收到“多次定义”链接错误。