打印

使用KEIL的问题,应该是关于编译器的

[复制链接]
1552|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kouyaofei|  楼主 | 2012-4-10 13:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基本问题描述:使用uC/OS-II+uC/GUI在STM32(奋斗mini板)上做界面,编译器始终提示uC/GUI(V3.90版)中的HEADER.h文件中的GUI_CURSOR,未定义:
..\GUIinc\HEADER.h(78): error:  #20: identifier "GUI_CURSOR" is undefined
说明:
1.这是已经移植好的工程上出现的问题,之前一直没有,直到前几天要用LISTVIEW控件时,把LISTVIEW.h和LISTVIEW_private.h加入后,出现该问题;
2.关于定义:GUI_CURSOR在GUI.h中定义,而HEADER.h文件已经包含了 GUI.h;
3.头文件包含关系:GUI.h和HEADER.h都包含在include.h中,其中,GUI.h中也包含了include.h,最后HEADER.h也包含了GUI.h;
4.最后,在所有只包含了GUI.h的.c文件中会提示上面出现的“HEADER.h文件中的GUI_CURSOR未定义”问题;
5.工程里的“头文件路径”我设置的没错;
疑问:
1.其实,我定位在报错的地方,右键GUI_CURSOR,是可以定位到GUI.h中相应位置的,但是编译器就是说没定义。。。
2.大家的头文件里的包含关系是怎样的?-除非用到某些公用的数据结构时才加入相应的“底层头文件”;
3.后来我对包含关系做了以下修改:
a.include.h包含了所有ST固件库,uC/OS,用到的uC/GUI控件,仅包含在用户的应用程序中;
b.在GUI.h中,不包含include.h,而是用到谁再包含谁。在原来仅包含GUI.h的C文件中,包含进include.h;
4.这样一来,编译器不再提示错误。问题也解决了,但是奇怪的事情又发生了——当我把3.中的修改再改回去之后,这次编译器不报错了!!!
  看到最后的大侠,才是真的大侠。。。谁能帮我解释以下4.的问题!!

相关帖子

沙发
kouyaofei|  楼主 | 2012-4-10 13:42 | 只看该作者
更正一下,由于最后修改时不细心,最终改回去之后——即在GUI.h中包含include.h,在其他C文件中仅包含GUI.h时,编译器还是会提示这些C文件中的HEADER.h里GUI_CURSER未定义错误。

使用特权

评论回复
板凳
kouyaofei|  楼主 | 2012-4-10 19:28 | 只看该作者
自己顶了。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

1

粉丝