C头文件编写,使用出现的错误,请高手指教!!!!!!

shawsmith 2009-05-20 10:20:35
我的文件是"head.h"
下面是头文件的声明

#ifndef _HEAD_H_
#define _HEAD_H_
void print();
#endif


下面是对头文件中函数的实现
文件名为"head.c"

#include<stdio.h>
#include "head.h"

void print(){
printf("Hello");]
}


下面是使用"head.h"
文件名为 "testhead.c"


#include "head.h"
int main(){
print();
return 0;
}



但编译的时候出现下面错误:

[Error] C:\Users\Shaw\Documents\C-Free\Projects\test_head.c:3: undefined reference to `print'

请问这是什么原因,我试了好几次,都是这种原因?????
...全文
170 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicholasfly 2009-05-21
  • 打赏
  • 举报
回复
加上extern?

想法8错……弱弱地问一下楼主,.h与c文件在同一个工程中不???
tzg_dzq 2009-05-21
  • 打赏
  • 举报
回复
在"testhead.c"中加上如下语句试一试:
extern void print();
blh 2009-05-21
  • 打赏
  • 举报
回复
把你的编译命令贴出来
yylklshmyt20090217 2009-05-21
  • 打赏
  • 举报
回复
我的也是可以顺利编译的~linux和windows下都试过了~
ly314452354 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ly314452354 的回复:]
pirnt应该是printf吧?那个错误信息翻译过来应该是未声明的变量。
[/Quote]不好意思,看错了。
ly314452354 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ly314452354 的回复:]
pirnt应该是printf吧?那个错误信息翻译过来应该是未声明的变量。
[/Quote]不好意思,看错了。
rotus 2009-05-21
  • 打赏
  • 举报
回复

如果是摘录的代码,

head.h 在其他地方重复定义了? 导致你的头文件没用上。

ly314452354 2009-05-21
  • 打赏
  • 举报
回复
pirnt应该是printf吧?那个错误信息翻译过来应该是未声明的变量。
看那山瞧那水 2009-05-21
  • 打赏
  • 举报
回复
我试了,没问题,肯定是你的编译平台有问题吧,路径什么的,我用的是IAR的
hjjdebug 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shawsmith 的回复:]
我已经编译过了,生成head.lib文件,但还是不行!!!
[/Quote]
即如此,你需要连接时指定你的库文件。
其实你可以不用lib 文件,直接连接.o 文件就可以了。
foxyz123 2009-05-21
  • 打赏
  • 举报
回复
帮UP看看到底什么问题
shawsmith 2009-05-21
  • 打赏
  • 举报
回复
我已经编译过了,生成head.lib文件,但还是不行!!!
lingsheng1111 2009-05-20
  • 打赏
  • 举报
回复
来学习
arong1234 2009-05-20
  • 打赏
  • 举报
回复
感觉他还没到链接的地方就错了
[Quote=引用 2 楼 nlylidb 的回复:]
编译的时候没有编译head.c?所以链接的时候没有把实现连上去吧。
如果是linux:
gcc head.c test_head.c

windows的不会
[/Quote]
nlylidb 2009-05-20
  • 打赏
  • 举报
回复
编译的时候没有编译head.c?所以链接的时候没有把实现连上去吧。
如果是linux:
gcc head.c test_head.c

windows的不会
arong1234 2009-05-20
  • 打赏
  • 举报
回复
这是你原始代码还是你摘录的代码?如果是你摘录的,你可能露调一些导致问题的真正代码,所以别摘录,把所有代码都复制过来
其次:要列出所有的错误信息

再次:如果你文件种使用了#include "stdafx.h",必须确保它是第一行,因为凡是这行代码前的代码一概忽略,尤其是你如果把#include "head.h"放再#include "stdafx.h"之前,现象和你说的完全一样

70,035

社区成员

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

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