如何给结构体内的变量起多个名字?

2020-01-01 17:33发布

本帖最后由 graycker 于 2017-2-10 08:35 编辑

用联合体可以实现,有更好的办法没?特别是当变量是自定义位大小类型的时候。比如:
typedef struct
{
  unsigned low:10;
  unsigned middle:10;
  unsigned high:10;
}data_t;

修改原因:描述错误
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
takashiki
2020-01-02 12:00
graycker 发表于 2017-2-10 09:19
刚刚在IAR下面试了下,果然可以,谢谢了。

这样的宏定义你必须保证其他地方不出现xxx, yyy,否则出错误查都查不出来。
最好的方法是匿名联合。
Keil C中要加入#pragma anon_unions,IAR、GCC、C++应该是不需要加的。
  1. typedef union{
  2.     struct {
  3.         unsigned low:10;
  4.         unsigned middle:10;
  5.         unsigned high:10;
  6.     };
  7.     struct {
  8.         unsigned xxx:10;
  9.         unsigned yyy:10;
  10.         unsigned zzz:10;
  11.     };
  12. }data_t;

  13. data_t dat;
复制代码dat.low和dat.xxx其实是一样的。

一周热门 更多>