如何为一个函数创建头文件并在不同文件中实现该函数?另外,你如何在另一个文件中拥有main并调用这个函数? 的好处是,这个函数将成为一个可以重用的独立组件,对吗?函数头和在不同文件中的实现C
回答
在C/C++中,非内联函数只能定义一次。如果将头文件中的函数定义为 ,那么当头文件包含多次时,将会出现“多重定义”链接错误。
我不会在头文件中放入func defn。我将分别包含foo.h和foo.c,其中包含声明和实现。我怎么做? – Namratha 2011-04-07 03:52:36
我对你的问题感到困惑,你能说清楚吗? – burningice 2011-04-07 04:03:25
请参阅此。这里解释。 http://stackoverflow.com/questions/5575700/error-expected-asm-or-attribute-before-token-in-c/5575804#5575804 – Namratha 2011-04-07 04:06:56
这是最好的例子。
说我们想要一个函数来找到一个整数的立方体。
你将不得不在,比方说在定义(实现),cube.c
int cube(int x) {
return x * x * x;
}
然后我们把功能声明在另一个文件中。按照惯例,这在这种情况下在header file,cube.h
中完成。
int cube(int x);
我们现在可以从别的地方,driver.c
例如,通过使用#include
指令(这是C预处理程序的一部分)调用该函数。
#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'
其实你可以实现在头文件中的任何功能获得更好的性能(实现例如库时),只要不被引用的特定对象(实际上它赢得不会编译它)。 顺便说一句,即使有这种方式,你有单独的接口和实现;) 当然,你将包括在你的头文件gurads,以避免“多重定义”的错误。
- 1. 在C++中,如何引用不同头文件中的函数?
- 2. C++实现和头文件链接
- 3. C++单独实现和头文件
- 4. Objective C头文件实现
- 5. 成员函数的不同实现C++
- 6. 什么是头文件和C++中的实现文件?
- 7. 在C#中实现函数
- 8. 在C++中包含头文件(类定义和方法实现)
- 9. 构造函数在实现中与头文件
- 10. 使用头文件和实现文件的C++类
- 11. 如何在C++的不同函数中实现重定向stdin?
- 12. 两种不同的头文件一个实现文件
- 13. C头文件具有相同的声明,但不同的实现
- 14. 覆盖虚函数不工作,头文件和C++文件
- 15. 保持头文件和实现文件同步
- 16. 同时添加头文件和实现文件
- 17. 全局函数头和实现
- 18. C++头文件/实现文件和重载运算符
- 19. C++头文件和实现文件:包含什么?
- 20. 强制Xcode4为头文件和实现文件使用不同的主题
- 21. 在不同的头文件中内联Constexpr const char *函数
- 22. 在类头和实现中包含头文件?
- 23. 将头文件链接到C++中的实现文件
- 24. 使用头文件和实现文件实例化和使用C++类
- 25. 在Xcode中使用C头文件和实现文件iOS项目
- 26. C程序找不到包含在头文件中的函数
- 27. 在头文件中定义构造函数VS实现(.cpp)文件
- 28. 辅助函数是否应该放在头文件或实现文件中?
- 29. 不同头文件中的upper_bound和lower_bound?
- 30. 在C++中实现Matlab的fmincon函数
[在C++中为什么有头文件和cpp文件?]的可能的重复(http://stackoverflow.com/questions/333889/in-c-why-have-header-files-and-cpp-files) – GWW 2011-04-07 03:30:04