IAR报错未定义的外部声明Error[e46]: Undefined external “XXXX“ referred in main

第一种情况:项目中只导入了.h文件,但是对应的.C文件没有导入进去。

如下图,只有一个sensor.h文件,sensor.c文件编辑好后没有导入进去.
在这里插入图片描述
导入sensor.c文件后,就没有报错了.
在这里插入图片描述

第二种情况:报错内容中包含自定义的结构体名称

这种报错是因为在.h文件中声明了结构体,并且直接进行了赋值导致的。

举例:以下结构体进行了赋值,所以不能直接写入.h文件:

struct _strTime{
  uint8 yms[11];//年月日
  uint8 hms[9];//时分秒
}strTime={"2020/08/30","12:09:00"};

解决方法:
将上述结构体移动到.c文件中,
然后在.h文件中做如下声明即可:

extern struct _time time;

第三重情况:报错内容包含mcu自带的宏定义名称

第三种情况调试时会有非常多的报错,问题根源是头文件版本不兼容当前的IAR版本。
解决方法:
1.使用对应版本的IAR,IAR常见版本是V5.1和V7.12.1;
2.。需修改头文件。如io430.h(V5.1)改为msp430x14x.h(V7.12.1)。这个操作比较麻烦,务必检查项目中所有的.c和.h文件,确保全部修改完成。

---------------------------------------------------------END----------------------------------------------------------
以上为个人总结的经验.如果本片文章对您有所帮助,欢迎点赞 收藏 留言!

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值