免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2358 | 回复: 8
打印 上一主题 下一主题

[C] typedef问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-13 21:00 |只看该作者 |倒序浏览
我在《C专家编程》这本书的60页中看到这么一段:

结构中允许存在位段、无名子段以及字对齐所需的填充子段,这些都是通过在字段的声名后面加一个冒号以及表示字段位长的整数来实现的。

/×处理ID信息×/
struct pid_tag{
unsigned int inactice  :1;
unsigned int           :1;
unsigned int refcount  :6;
unsidned int :0;
short pid_id;
struct pid_tag *link;
};


不理解。。。。。。
希望高手们不吝赐教。

论坛徽章:
0
2 [报告]
发表于 2011-09-13 21:25 |只看该作者
unsigned int inactice  :1;   unsigned int refcount  :6;   位段

unsigned int           :1;      无名子(字?)段  保证inactice  和 refcount  隔一位

unsidned int :0;    无名字段 用于对齐 pid_id

论坛徽章:
0
3 [报告]
发表于 2011-09-13 21:35 |只看该作者
不过这和typedef没什么关系吧
标题很费解

论坛徽章:
0
4 [报告]
发表于 2011-09-14 18:36 |只看该作者
非常感谢楼上的帮忙,谢谢……

因为这个在书中的typedef声明中提到的,而且对这个也不是很理解,所以用这个作为标题也很无奈,请原谅。

这样的代码听说是“深入逻辑原件的编程”,请问这样的代码有什么意义,如果可能的话,写个实例参考下,不甚感激。

说明下,现在对深入逻辑原件的编程没有任何的接触。

论坛徽章:
0
5 [报告]
发表于 2011-09-14 21:50 |只看该作者
因为我想往嵌入式方向发展,第一阶段准备加强C语言功底,所以在再看《C语言专家编程》,我再查下关于这方面的资料,谢谢……

论坛徽章:
0
6 [报告]
发表于 2011-09-15 14:58 |只看该作者
位段:在一个结构体中以位为单位来指定其成员所占内存长度,这些成员称为“位段”或“位域”。
一个字节分段赋值或改变值的方法
(1)人为方法:进行移位、与、或、非运算
(2)位段结构体方法:
e.g.  struct packed_data
     { unsigned a:2;
       unsigned b:3;
       unsigned c:4;
       int i;
     }data;
    data.a=2;    //成员变量赋值
注意:(1)位段成员类型必须为unsigned或int型;
      (2)若某一位段要从另一字节开始存放,前面加入 unsigned :0;
       (3) 可以定义无名字段,如 unsigned :2;

论坛徽章:
0
7 [报告]
发表于 2011-09-15 20:17 |只看该作者
“深入逻辑原件的编程”?
没那么玄吧
不过就是数据存储的紧凑一些而已
写代码比用位运算更好写一些

论坛徽章:
0
8 [报告]
发表于 2011-09-15 21:18 |只看该作者
回复 7# ahutwgs


    位字段还可以是_BOOL与编译器扩展类型
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP