CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  工具平台和程序库

用Source Insight写嵌入式C,发现不能识别union里的变量,如何解决?

楼主mavers(Just do it)2006-06-01 14:43:03 在 C/C++ / 工具平台和程序库 提问

用Source   Insight写某个嵌入式处理器的C,发现source   insight不能识别union里的变量,也就是说,定义好这个union后,在程序其它地方用里面的变量时,不能“自动完成”。  
   
  原因可能是union体的结束大括号后,跟了一个   "@0xD2"   地址信息。。把这个去掉就能识别  
  请各位熟悉Source   Insight的兄弟们看看,有没有办法解决?  
   
   
  代码:  
  __no_init   volatile   union  
  {  
  unsigned   char   TACON;  
  struct  
  {  
  unsigned   char   PND :   1;  
  unsigned   char   EN :   1;  
  unsigned   char   RUN :   1;  
  unsigned   char   CLR :   1;  
  unsigned   char   DIV :   2;  
  unsigned   char   NA :   1;  
  unsigned   char   MODE :   1;  
  }TACON_bit;  
  }   @   0xD2; 问题点数:20、回复次数:10Top

1 楼herryhuang(Herry)回复于 2006-06-03 20:02:40 得分 0

俺也用SI,俺也嵌入式,俺没碰到这个问题。  
   
  兄弟,应该是定义全局变量的时候才指定地址吧,你这段代码只是定义了一个类型,没有定义变量,哪来的地址?  
   
  这代码能编么?Top

2 楼happytang(一只叫苏格拉底的猪)回复于 2006-06-03 23:19:27 得分 0

定义地址是这么写吗?  
  给各例子先Top

3 楼mavers(Just do it)回复于 2006-06-04 10:30:54 得分 0

是这么写的,编译能通过。。而且编译器的手册上有例子就是这样定义的  
  变量就是TACON或者TACON_bit这个寄存器  
   
  如果不用union,那么就是这样定义的:  
  __no_init   volatile   unsigned   char   TACON   @   0xD2;  
   
  Top

4 楼ywhbn(天涯)回复于 2006-06-04 11:18:48 得分 0

先把@0xD2注释掉,等编译时再去掉注释Top

5 楼windspeaker()()回复于 2006-06-04 16:39:14 得分 0

#define   ABCDEF   @   0xD2  
  顺便问一句,怎么才能定义这个union的对象呢Top

6 楼mavers(Just do it)回复于 2006-06-04 17:08:49 得分 0

把@0xD2注释掉这个方法倒是可行,但是我是要把代码给客户做开发的。。总不能让客户也这么办吧  
  我其实是想从   source   insight   的设置下手,而不是从代码上下手Top

7 楼mavers(Just do it)回复于 2006-06-07 13:31:59 得分 0

终于解决了。。  
  搞一个source   insight专用的头文件,删除union,地址等信息,这样写程序方便(只要加入到source   sight的项目中,就可以识别变量了)  
  include标准的头文件只用来编译,哈哈  
   
  把union和地址信息删掉,然后代码这样就可以了:  
  unsigned   char   TACON;  
  struct  
  {  
  unsigned   char   PND:   1;  
  unsigned   char   EN:   1;  
  unsigned   char   RUN:   1;  
  unsigned   char   CLR:   1;  
  unsigned   char   DIV:   2;  
  unsigned   char   NA:   1;  
  unsigned   char   MODE:   1;  
  }TACON_bit;  
  Top

8 楼WingForce(初六,履霜,坚冰至。)回复于 2006-07-13 22:53:51 得分 0

实际上你可以自己写解析的正则表达式就好了Top

9 楼FigoZhu(谢慕安)回复于 2006-07-17 15:06:28 得分 0

为什么你不把结构声明,和变量定义分两行写呢?Top

10 楼tanlight()回复于 2006-08-10 21:29:01 得分 0

缺少*.h文件。在source   insight里凡是没有定义过的变量或函数就会这样。  
  在project的头文件里定义就完事了。Top

相关问题

关键词

得分解答快速导航

  • 帖主:mavers

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo