在KEIL环境下使用 HC89F0531进行开发。现在刚刚新建了个很简单的工程,里面有两个c源文件 main.c 和 clock.c和一个h头文件head.h。main.c 文件内容如下:#include "head.h"
void main(void)
{
uchar i;
InitClock();
while (1)
{
i++;
}
}
clock.c 文件内容如下:
#include "head.h"
void InitClock(void)
{
CLKSWR = 0x51;
CLKDIV = 0X01;
}
head.h头文件内容如下:
#ifndef HEAD_H_
#define HEAD_H_
#include "HC89F0531.h"
void InitClock(void);
#endif
整个工程没有其他源文件和头文件了,很简单的一个工程, 然后编译工程出现了下面的这两种错误:
linking...
***ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: P0M0
MODULE: .\Out\clock.obj(CLOCK)
...
...
...
***WARNING L6: XDATA SPACE MEMORY OVERLAP
FROM: FE80H
TO: FE80H
...
...
...
意思就是所有的寄存器定义出现了重定义, 外部数据空间重叠,其实是XSFR空间重叠,看上去根本原因就是 HC89F0531.h 头文件被包含了多次,但是从代码上看不应该被包含多次,有朋友知道是什么原因吗???
|