用keil 关于头文件.h和对应的.c的问题 我自己写的延时函数 .h和.c,在.h里放了函数的声明,在.c里定义,

哪位大神帮我看哈,谢谢了
程序很简单#include <reg52.h>
#include"delay.h"
sbit LED0=P1^0;
void main()
{
while(1)
{
LED0=0;
delay1s();
LED0=1;
delay1s();
}
}
但是结果没执行delay1s()这个函数,
下面出现2个警告:
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: DELAY3S
MODULE: main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: DELAY3S
MODULE: main.obj (MAIN)
ADDRESS: 0012H

这是头文件delay.h:
#ifndef __DELAY_H__
#define __DELAY_H__

void delay1ms(void);
void delay2ms(void);
void delay3ms(void);
void delay5ms(void);
void delay8ms(void);
void delay9ms(void);
void delay10ms(void);
void delay30ms(void);
void delay50ms(void);
void delay100ms(void) ;
void delay3s(void);

#endif

.c文件里写好了函数的定义的...
这两个文件我都放工程文件夹里面的了

第1个回答  2012-10-28
如果你的函数和调用的名字是一样的话,那你看看,有没有把这个C文件添加到工程中,如果没添加的话就会报错。
第2个回答  2012-10-28
程序里用的是delay1s();
.h文件里用的是void delay3s(void); 我想,你应该是这里打错了,应该改成void delay1s(void);

报错是提示你:找不到delay3s的定义追问

把.C和,H里全部统一为delay1s()也会出现这种情况, 上面是我左该右该出错了。。。

追答

还是一样的错误吗?

追问

嗯,是的,3个警告提示
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: DELAY1S
MODULE: main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: DELAY1S
MODULE: main.obj (MAIN)
ADDRESS: 0006H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: DELAY1S
MODULE: main.obj (MAIN)
ADDRESS: 000BH
谢谢~

追答

我知道了,你把头文件改成这样的

#ifndef __DELAY_H__
#define __DELAY_H__

extern void delay1ms(void);
extern void delay2ms(void);
extern void delay3ms(void);
extern void delay5ms(void);
extern void delay8ms(void);
extern void delay9ms(void);
extern void delay10ms(void);
extern void delay30ms(void);
extern void delay50ms(void);
extern void delay100ms(void) ;
extern void delay3s(void);

#endif

追问

刚才改了,还是不行。。

追答

extern void delay3s(void); 改成 extern void delay1s(void); 我手误

追问

嗯,我全部改为delay1s了, 加上extern也出现一样的警告

追答

请加我QQ吧,QQ就是我的账号,把程序发给我,我用KEIL看看

本回答被提问者和网友采纳
第3个回答  2022-10-12
#ifndef(这里要空一格) __DELAY_H__
#define(这里要空一格) __DELAY_H__
第4个回答  2012-10-28
看看你输入函数的时候 输入法有没有问题