注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

FY

Johnson 's Blog

 
 
 

日志

 
 

结构体位域  

2015-09-23 19:21:38|  分类: C Programming L |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

定义如下结构体位域:

union {

                            struct {

                                          unsigned char  A  :1;

                                          unsigned char  B  :1;

                                          unsigned char  C  :1;

                                          unsigned char  D :1;

                                          unsigned char  E  :1;

                                          unsigned char  F  :1;

                                          unsigned char  G :1

                                          unsigned char  H  :1

                            }bit;

                            unsigned char byte;

} my_union;

 

已证实在FM3平台上,和M16C平台一样,A被放置在bit0,H被放置在bit7

 

引申:我们一般对这个结构体整体初期化时,都会“偷懒”,直接使用unsigned char byte来赋值

      但【A被放置在bit0,H被放置在bit7】这完全是编译行为,不具备可移植性或是通用性。

      因为有可能在另一个平台上是这样:【A被放置在bit7,H被放置在bit0

     此情况下,使用旧平台的整体赋值方式,得到的各个bit的初期值将不会是我们期望的

     因此,如果你希望你的代码有通用性,那么即使给位域成员初期化,也请老老实实的使用bit的方式

  评论这张
 
阅读(50)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018