打印

使用iar 7.11.3一个工程中多个文件包含msp430f449.h无法连接问题

[复制链接]
2244|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzqgwy|  楼主 | 2018-5-31 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zzqgwy 于 2018-5-31 11:32 编辑

使用iar 7.11.3开发,一个工程中多个文件包含msp430f449.h头文件,编译没错误,连接时提示Error[e24]: Segment DATA16_AN (seg part no 2, symbol "P1OUT" in module "key02", address [21-21])  overlaps segment DATA16_AN (seg part no 5, symbol "_A_P1OUT" in  module "main", address [21-21])  错误,几个文件都用到msp430f449.h头文件中宏定义,不包含头文件,编译出错,找不到定义
不会上传附件,直接复制代码:

key02.c:
#include <msp430f449.h>

void Delay(void)
{
        int i;
        for(i = 100;i > 0;i--) ;//延时一点时间
}

....

main.c:
#include <io430f449.h>

void Init_SPI (void);
void Init_Port(void);
void Init_CLK(void);


void Init_CLK(void)
{
    unsigned int i;

...

msp430f449.h:
#ifndef __msp430x44x
#define __msp430x44x

#define __MSP430_HEADER_VERSION__ 1204

#ifdef  __IAR_SYSTEMS_ICC__
#ifndef _SYSTEM_BUILD
#pragma system_include
#endif
#endif

...

相关帖子

沙发
dirtwillfly| | 2018-5-31 10:04 | 只看该作者
一般情况下 这种问题是 因为 头文件重载造成的
一般使用
  #pragma once
和#ifndef
l这两种方式来 进行回避

使用特权

评论回复
板凳
dirtwillfly| | 2018-5-31 10:04 | 只看该作者
但头文件里一般已经使用过#ifndef ,所以一般不会遇到这个问题
楼主方便把工程上传一下吗

使用特权

评论回复
地板
zzqgwy|  楼主 | 2018-5-31 11:29 | 只看该作者
本帖最后由 zzqgwy 于 2018-5-31 11:31 编辑
dirtwillfly 发表于 2018-5-31 10:04
但头文件里一般已经使用过#ifndef ,所以一般不会遇到这个问题
楼主方便把工程上传一下吗 ...

感谢回复,发现是两个头文件名字不一样,解决了。

使用特权

评论回复
5
dirtwillfly| | 2018-5-31 11:32 | 只看该作者
zzqgwy 发表于 2018-5-31 11:29
感谢回复,发现是两个头文件名字不一样,解决了。

头文件里有#ifndef,应该没问题啊
奇怪的问题。建议把工程传上来

使用特权

评论回复
6
kkzz| | 2018-6-1 21:57 | 只看该作者
头文件重载造成的

使用特权

评论回复
7
hudi008| | 2018-6-1 21:58 | 只看该作者
有些文件包含了msp430f449.h

使用特权

评论回复
8
lzmm| | 2018-6-1 21:59 | 只看该作者
不能对它进行写入吧

使用特权

评论回复
9
minzisc| | 2018-6-1 21:59 | 只看该作者
重复定义了。

使用特权

评论回复
10
selongli| | 2018-6-1 21:59 | 只看该作者
你把整个文件上传看看。

使用特权

评论回复
11
fentianyou| | 2018-6-1 22:00 | 只看该作者
找不到文件吗?

使用特权

评论回复
12
xiaoyaodz| | 2018-6-1 22:00 | 只看该作者
是找不到文件吗?

使用特权

评论回复
13
sdlls| | 2018-6-1 22:02 | 只看该作者
上传文件看看。

使用特权

评论回复
14
pixhw| | 2018-6-1 22:02 | 只看该作者
zzqgwy 发表于 2018-5-31 11:29
感谢回复,发现是两个头文件名字不一样,解决了。

两个头文件名字不一样不是引用的问题吗?

使用特权

评论回复
15
xiaoyaodz| | 2018-6-1 22:02 | 只看该作者
宏定义找不到,重新查找。

使用特权

评论回复
16
kkzz| | 2018-6-1 22:02 | 只看该作者
一般使用 #pragma once 和#ifndef l这两种方式来 进行回避

使用特权

评论回复
17
fentianyou| | 2018-6-1 22:02 | 只看该作者
#include “msp430f449.h”这样行吗

使用特权

评论回复
18
hudi008| | 2018-6-1 22:02 | 只看该作者
两个文件有很多重叠的地方

使用特权

评论回复
19
selongli| | 2018-6-1 22:03 | 只看该作者
<msp430f449.h>是不是有问题呢?

使用特权

评论回复
20
lzmm| | 2018-6-1 22:03 | 只看该作者
能通过读取其寄存器的内容

使用特权

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

本版积分规则

11

主题

39

帖子

1

粉丝