打印

keil4中该如何外部引用联合union?

[复制链接]
2048|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjucsd|  楼主 | 2016-9-21 13:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
xyz549040622| | 2016-9-21 21:58 | 只看该作者
直接定义,用extern申明就好了吧。

使用特权

评论回复
板凳
dirtwillfly| | 2016-9-22 08:16 | 只看该作者
楼上正解。keil支持联合体的,没啥特殊的。噢,好像匿名联合体要特殊处理一下。

使用特权

评论回复
地板
zjucsd|  楼主 | 2016-9-22 10:10 | 只看该作者
union
{
   UINT8   chardata[4];
   UINT16  intdata[2];
   UINT32  longdata[1];
}ID;在主程序中定义

外部引用
extern  union
{
     UINT8   chardata[4];
     UINT16  intdata[2];
     UINT32  longdata[1];
}ID;

编译不成功
error:  #147: declaration is incompatible with "union <unnamed> ID" (declared at line 13 of "USER_CODE\myvrb.h")

使用特权

评论回复
5
ccxlslr| | 2016-9-22 10:12 | 只看该作者
本帖最后由 ccxlslr 于 2016-9-22 10:13 编辑
zjucsd 发表于 2016-9-22 10:10
union
{
   UINT8   chardata[4];

你的联合名称都没有,只定义了一个“ID”。自然没法引用!

先弄个名称再 extern union 名称; 试试

使用特权

评论回复
6
zjucsd|  楼主 | 2016-9-22 10:17 | 只看该作者
主程序
union IDDATA
{
   UINT8   chardata[4];
   UINT16  intdata[2];
   UINT32  longdata[1];
}ID;

外部引用extern  union  IDDATA;

报警error:  #20: identifier "ID" is undefined
      warning:  #1000-D: a storage class may not be specified here

使用特权

评论回复
7
justtest111| | 2016-9-22 11:32 | 只看该作者
typedef __packed union
{
uint32_t data32;
} Uino_S;
extern Uino_S data;

使用特权

评论回复
8
zjucsd|  楼主 | 2016-9-22 14:04 | 只看该作者
有相关资料说明一下吗,不是很明白

使用特权

评论回复
9
zjucsd|  楼主 | 2016-9-22 14:21 | 只看该作者
还是编译不过,迷茫中

无标题.png (19.55 KB )

无标题.png

使用特权

评论回复
10
ccxlslr| | 2016-9-22 14:34 | 只看该作者

union IDDATA
{
   UINT8   chardata[4];
   UINT16  intdata[2];
   UINT32  longdata[1];
}ID;

外部引用extern  union  IDDATA ID;

使用特权

评论回复
11
zjucsd|  楼主 | 2016-9-22 15:13 | 只看该作者
keil4编译后还是报警
USER_CODE\APP-ARM020PC.c(35): error:  #70: incomplete type is not allowed
USER_CODE\APP-ARM020PC.c:                   TX0chardata[4+i] = ID.chardata[i];

使用特权

评论回复
12
lxyppc| | 2016-9-22 15:22 | 只看该作者
把你的uint8 16 32改成unsigned char,short,long试试

使用特权

评论回复
13
zjucsd|  楼主 | 2016-9-22 15:51 | 只看该作者
一样的报警

使用特权

评论回复
14
zjucsd|  楼主 | 2016-9-22 15:52 | 只看该作者
union IDDATA
{
   unsigned char   chardata[4];
   unsigned int  intdata[2];
   unsigned long  longdata[1];
}ID;

extern  union IDDATA ID;

使用特权

评论回复
15
zjucsd|  楼主 | 2016-9-23 08:08 | 只看该作者
早上报到

使用特权

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

本版积分规则

100

主题

351

帖子

3

粉丝