c引用外部函数

bisal(Chen Liu)
博客专家认证
2009-11-11 04:48:52
我定义一个头文件head.h:
int compute(int a, int b);
定义它的实现:head.c:
#include "head.h"
int compute(int a, int b)
{
int c;
c = a + b;
return c;
}
之后,在主文件中引用head.c中的compute函数:test.c
#include "head.h"
int main ( void )
{
int a=5, b=10;
printf("compute=%d\n", compute(a, b));
}
但提示compute函数未定义,这种引用方式不对?请指教!谢谢!
...全文
361 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanchangyong 2009-11-14
  • 打赏
  • 举报
回复
这种情况需要分别编译两个.c文件,然后用link来链接.
liang0356 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tianweishuiguo 的回复:]
看看你的head.c参与编译了没有
[/Quote]

4楼已经说出一半的本质原因。关键是头文件和实现文件都要编绎。一般的编绎器都要求。实现文件和调用文件在同一工程内。最直接的就在同一文件夹内。
canican 2009-11-14
  • 打赏
  • 举报
回复
加不加extern是一样的吧,它在默认的
需要两个文件一块儿编译、链接
bisal(Chen Liu) 2009-11-12
  • 打赏
  • 举报
回复
确实是,如果使用gcc *.c就可以了
liuhaifeng1976 2009-11-11
  • 打赏
  • 举报
回复
头文件没找到吧
东大坡居士 2009-11-11
  • 打赏
  • 举报
回复
看看你的head.c参与编译了没有
lzh3ng 2009-11-11
  • 打赏
  • 举报
回复
1楼正解
lbaihao 2009-11-11
  • 打赏
  • 举报
回复
extern int compute(int a, int b);
jenf 2009-11-11
  • 打赏
  • 举报
回复
你应该加上声明:extern int compute(int a, int b); 在test.c 中

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧