在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 头文件被包含了多次,但是从代码上看不应该被包含多次,有朋友知道是什么原因吗???
|