Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198742
  • 博文数量: 60
  • 博客积分: 3269
  • 博客等级: 中校
  • 技术积分: 648
  • 用 户 组: 普通用户
  • 注册时间: 2005-09-21 10:48
文章存档

2012年(6)

2011年(6)

2010年(30)

2009年(8)

2007年(6)

2005年(4)

我的朋友

分类: C/C++

2010-12-07 00:02:21

       位定义、位段定义、register、volatile
       翻看代码居然连当初的位定义高地位顺序都迷糊了,GTK代码包罗万象呀。
 
       typedef struct
       {
            unsigned char no0:1; // 低位
            unsigned char no1:1;
            unsigned char no2:1;
            unsigned char no3:1;
            unsigned char no4:1;
            unsigned char no5:1;
            unsigned char no6:1;
            unsigned char no7:1; // 高位
       } __BIT8 ;
       volatile union { unsigned char flags; __BIT8 flags_bit; } ;

       #define stretch_flag        flags_bit.no0
 
       flags = 0; // 8位全都是0了
       stretch_flag = 1; // flags = 00000001
 
       看到volatile顺便想到register,etpan库中就遇到register类型的使用。顺便记一下。
       register int 使用寄存器,对频繁的变量操作加速,一般用于数值算法,其实一般编程中没什么用。
       volatile 指示此变量可由程序外部改变,比如读写串口寄存器。
       这两个类型要看编译器如何对待他们了。
阅读(976) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-07 15:50:50

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com