如何为函数提供头文件以及在不同文件中实现该函数?另外,你如何在另一个文件中使用main并调用此函数? 优点是这个函数将是一个可以重用的独立组件,对吗?
答案 0 :(得分:5)
最好通过一个例子来说明。
假设我们想要一个函数来查找整数的立方体。
您可以在cube.c
int cube( int x ) {
return x * x * x;
}
然后我们将函数声明放在另一个文件中。按照惯例,这是在header file,cube.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 ++中,非内联函数只应定义一次。如果你把功能定义 在头文件中,当头文件包含多次时,您将收到“多次定义”链接错误。