【回眸】Hightec编译英飞凌TC397报错解决手册(中)

前言

写这篇文章是记录移植emc代码过程中遇到的错误及解决方案。上一篇文章可以点进博主首页查看

报错信息

6、expected identifier before numeric constant

原因:定义的enum结构体与其它处的宏定义有冲突。
查找:发现是enum结构体中的定义和原本代码中的宏定义有冲突
解决方案:注释掉原来冲突的结构体,取消赋值,重新声明结构体内的变量
思路:因为 原来的代码是个大工程,所以我们移植代码的时候
,优先选择修改移植的代码。这样以防修改原先代码后发现更多的错误

//	EVADC_CH_VBAT_MON = 0,//error:expected identifier before numeric constant(修改前)
	EVADC_CH_VBAT_MON,(修改后)

这个报错顺利解决
补充:后来发现并没有解决又过来返工
我们把出错的地方的定义别名给全部注释,找到原先文件里含这个宏定义的.h头文件,然后将这个宏文件include到使用到这个别名的地方就可以了。
源文件里包含宏定义的.头文件名字叫"Evadc_Gaea.h"
最后终于顺利消失了!耶✌

7、unknown type name ‘bool’

原因:在C语言标准(C89)没有定义布尔类型,所以会报错。
解决方案:C99提供了一个头文件定义了bool,true代表1,false代表0。只要导入stdbool.h,导入头文件#include
报错信息顺利消失了

8、‘TimeConst_1s’ undeclared (first use in this function)

8.2、‘TIMER_INDEX_1S’ undeclared (first use in this function)

net_send_t1 = (sint32)(now() / TimeConst_1s);
原因:缺少延时函数
解决方案:我想添加一个头文件,因为查到Bsp.h(自带)的头文件中有包含这个延时函数,我找了一下原来的代码里也有"Bsp.h"文件,但是神奇的事情发生了,这个报错没有消失。ok那我们先去解决其他报错
补充:把其他报错解决后回来啃这块硬骨头了,现在换个思路,先打开Bsp.h文件看看里面有什么,顺便看看到底有没有延时函数,发现有一个叫"Ifx_DateTime.c"的文件里可以使用这个TimeConst_1s,于是我把该文件里面的宏定义都拖出来,放到移植的代码中。

9、error: ‘MESSAGE_HEART_BEAT’ undeclared (first use in this function)

原因:找不到MESSAGE_HEART_BEAT,但其他文件里有这个宏定义。
解决方案:于是把其他文件里的宏定义复制到报错的文件里。
这个报错顺利解决了。

后记

目前已经移植了两个文件夹,还有一个文件夹报错多到离谱,等着解决手册下出来,这段移植就结束啦。冲冲冲,今天先歇会,上班累了,加油,汽电人!

你可能感兴趣的:(物联网学习笔记,加油汽电人,英飞凌TC397,c语言,开发语言,物联网,嵌入式,汽车)