野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20849|回复: 9

被MDK折磨的不行了,这问题奇怪嘛,LCD驱动头文件放在不同的地方编译结果不一样?

[复制链接]
发表于 2013-6-24 21:02:22 | 显示全部楼层 |阅读模式
先截图2张看看,对比一下。。

看看问题出在哪里:

如果我把

LCD_ACOLORINDEX 参数换成一个常数就没问题了。。

搞了几天,没找到原因。。。

位置1

位置1

位置2

位置2

问题的地方。

问题的地方。
回复

使用道具 举报

发表于 2013-6-24 22:18:45 | 显示全部楼层
头文件,放的位置不一样,有可能导致声明,宏定义等不相同,导致编译结果不相同

这个是C语言问题……

另外, 你都没有编译成功,说明代码有语法错误的,交叉位置,会使得编译器编译的顺序不一样,从而导致提示的错误不一样
回复 支持 反对

使用道具 举报

发表于 2013-6-24 22:20:23 | 显示全部楼层
这些 语法 问题,其他人很难帮到你的,靠你自己人家比较

建议你直接百度提示错误信息,然后根据说明来比较代码是否存在那样的错误
回复 支持 反对

使用道具 举报

发表于 2013-6-24 22:23:51 | 显示全部楼层
例如提示 :expected a fleld name
百度一下:expected a fleld name

很容易找到如下网址:
http://zhidao.baidu.com/question/157730123.html

提供的参考资料是:
  1. 这个问题的出现,一定是你定义的结构体名冲突了!
  2. 譬如你在结构体里面定义的变量,有可能已经在别的地方进行了宏定义,或者是全局变量等。
  3. 总之,出现这个问题,一定是结构体成员名或者变量名冲突了,希望能帮到你。
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-6-24 22:24:42 | 显示全部楼层
严格来说,是被C语言语法折磨……而不是MDK
这些都是代码问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-25 08:06:24 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-24 22:24
严格来说,是被C语言语法折磨……而不是MDK
这些都是代码问题

谢谢版主,如果把那个写点哪里的代码替换成固定的颜色值,就能跑起来。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-25 08:54:23 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-24 22:24
严格来说,是被C语言语法折磨……而不是MDK
这些都是代码问题

找到了点蛛丝马迹,但实在看不懂啥意思:

#ifdef  GL_CORE_C
  #define GUI_EXTERN
#else
  #define GUI_EXTERN extern
#endif

GUI_EXTERN GUI_SADDR GUI_CONTEXT        GUI_Context;        /* Thread wide globals */

GUI_CONTEXT 的原型为:

typedef union {
  U8  aColorIndex8[2];
  U16 aColorIndex16[2];
  U32 aColorIndex32[2];
} LCD_COLORINDEX_UNION;

struct GUI_CONTEXT {
/* Variables in LCD module */
  LCD_COLORINDEX_UNION LCD;  //报错的是这个地方
  LCD_RECT       ClipRect;
  U8             DrawMode;
  U8             SelLayer;
  U8             TextStyle;
/* Variables in GL module */

#if (LCD_BITSPERPIXEL <= 8) && (GUI_NUM_LAYERS < 2)
  #define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex8[0]
  #define LCD_COLORINDEX   GUI_Context.LCD.aColorIndex8[1]
  #define LCD_ACOLORINDEX  GUI_Context.LCD.aColorIndex8
#elif (LCD_BITSPERPIXEL <= 16)
  #define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex16[0]
  #define LCD_COLORINDEX   GUI_Context.LCD.aColorIndex16[1]
  #define LCD_ACOLORINDEX  GUI_Context.LCD.aColorIndex16
#else
  #define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex32[0]
  #define LCD_COLORINDEX   GUI_Context.LCD.aColorIndex32[1]
  #define LCD_ACOLORINDEX  GUI_Context.LCD.aColorIndex32
#endif

在引用这个的时候报错 :LCD_ACOLORINDEX=GUI_Context.LCD.aColorIndex16

实在看不出有啥问题,也看不懂,C语言基础不好。。。。


回复 支持 反对

使用道具 举报

发表于 2013-6-25 09:00:44 | 显示全部楼层
LCD ,看看这个变量是不是其他地方已经定义了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-25 10:06:46 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-25 09:00
LCD ,看看这个变量是不是其他地方已经定义了?

果然被我自己定义了,天啦,因为这个问题我搞了好几天。。。太感谢了。。。。太感谢了,已经能正常运行了。。。

太棒了,非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-6-25 10:26:15 | 显示全部楼层
冷月_清秋 发表于 2013-6-25 10:06
果然被我自己定义了,天啦,因为这个问题我搞了好几天。。。太感谢了。。。。太感谢了,已经能正常运行了 ...

呵呵,学习就是这样来的,之前给你的百度参考资料里已经说的很清楚:
  1. 结构体里面定义的变量,有可能已经在别的地方进行了宏定义,或者是全局变量等。
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-11 00:28 , Processed in 0.032748 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表