打印
[技术支持]

Keil环境下头文件包含异常

[复制链接]
1049|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caohua0902|  楼主 | 2019-9-16 18:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在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 头文件被包含了多次,但是从代码上看不应该被包含多次,有朋友知道是什么原因吗???




使用特权

评论回复
沙发
caohua0902|  楼主 | 2019-9-19 10:10 | 只看该作者
有没有人遇到过这种问题??

使用特权

评论回复
板凳
蛮大头| | 2019-9-19 15:24 | 只看该作者
加上 #define        ALLOCATE_EXTERN

使用特权

评论回复
地板
玛尼玛尼哄| | 2019-9-25 00:04 | 只看该作者
楼上方法对吗,清理一下工程

使用特权

评论回复
5
玛尼玛尼哄| | 2019-9-25 00:04 | 只看该作者
楼主解决了没以前我也遇到过,后来删了重新弄就好了。

使用特权

评论回复
6
yiy| | 2019-9-28 18:08 | 只看该作者
放一个文件试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝