eric2013 发表于 2016-1-22 17:45:53

使用RTX和emWin,出现错误RTL.h(39): error:  #240: duplicate

错误如下:


==========================
出现这样的错误是应为Global.h文件和RTL.h文件重定义了,由于Global.h文件里面是这么定义的

#ifndef   U8
#define U8unsigned char
#endif
#ifndef   U16
#define U16 unsigned short
#endif
#ifndef   U32
#define U32 unsigned long
#endif
#ifndef   I8
#define I8signed char
#endif
#ifndef   I16
#define I16 signed short
#endif
#ifndef   I32
#define I32 signed long
#endif

#endif                      // Avoid multiple inclusion
=======================================
调用头文件的时候,RTL.h放在emWin相关头文件的全面即可。

tanguicaicai 发表于 2019-5-6 19:11:23

老大!我用你的模板改的--也会出现这个错。找个一天 也搞不明白 哪里还有错?我都把别几个.C文件都退出工程。只留这一个。还是这个错!

eric2013 发表于 2019-5-7 00:12:45

tanguicaicai 发表于 2019-5-6 19:11
老大!我用你的模板改的--也会出现这个错。找个一天 也搞不明白 哪里还有错?我都把别几个.C文件都退出工程 ...

使用我这个模板看看
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330&extra=page%3D1

雷鹏 发表于 2019-7-4 14:43:35

本帖最后由 雷鹏 于 2019-7-4 14:44 编辑

碰到过类似问题 ,不知道是不是两个文件重复包含了,没时间去深入研究了,想了个很不好的临时解决办法:
在RTL.H里面做了入下更改
      
typedef signed char   S8;
//typedef unsigned char   U8;      
#ifndef U8
typedef unsigned char   U8;
#endif
typedef short         S16;
//typedef unsigned shortU16;
#ifndef U16
typedef unsigned shortU16;
#endif
typedef int             S32;
//typedef unsigned int    U32;
#ifndef U32
typedef unsigned int    U32;
#endif

编译没问题了
这种办法是没有办法的办法,一般不建议修改官方程序 ,后期有精力了在深入研究模板看看。

页: [1]
查看完整版本: 使用RTX和emWin,出现错误RTL.h(39): error:  #240: duplicate specifie