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

  • Post author:
  • Post category:其他




第一种情况:项目中只导入了.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———————————————————-

以上为个人总结的经验.如果本片文章对您有所帮助,欢迎

点赞


收藏


留言

!



版权声明:本文为dorlolo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。