免费注册 查看新帖 |

Chinaunix

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

[C++] 很少用的语法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-14 10:00 |只看该作者 |倒序浏览
typedef struct{
        unsigned Version:8;
        unsigned MsgLen:24;

        unsigned reqFlag:1;      
        unsigned proxFlag:1;
        unsigned errFlag:1;
        unsigned potenFlag:1;
        unsigned reservedFlag:4;

        unsigned cmdCode:24;
        unsigned app_id:32;
        unsigned hop_by_hop_id:32;
        unsigned end_to_end_id:32;      
    }CmdHeader;

很少用这种语法,记得很早以前作串口的时候用过,现在在一个C++的网络程序
里见到了,不知道这种用法有没有什么限制?

论坛徽章:
0
2 [报告]
发表于 2007-11-14 10:03 |只看该作者
好像在C里面很常见。。。

论坛徽章:
0
3 [报告]
发表于 2007-11-14 10:27 |只看该作者
结构体吧,咋了?

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
4 [报告]
发表于 2007-11-14 10:30 |只看该作者
位域操作吧,C++网络通讯里面用
做短消息时候用过

现在忘得差不多了

[ 本帖最后由 cheng_lai_shun 于 2007-11-14 10:32 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-11-14 10:36 |只看该作者

回复 #1 zealotcat 的帖子

经常这么用,

typedef union _EVB_SW_STATE {
  BYTE val;
  struct _SW_STATE_bits {
    unsigned s1_val:1;
    unsigned s1_last_val:1;
    unsigned s1_tgl:1;
    unsigned s2_val:1;
    unsigned s2_last_val:1;
    unsigned s2_tgl:1;
  }bits;
}EVB_SW_STATE;

论坛徽章:
0
6 [报告]
发表于 2007-11-14 10:36 |只看该作者
主要是为了位操作

论坛徽章:
0
7 [报告]
发表于 2007-11-14 10:38 |只看该作者
我想知道在C++中用,会不会有平台或编译器不兼容的情况?还有性能问题,因为好像不能对一个字的中间的bit直接操作。

论坛徽章:
0
8 [报告]
发表于 2007-11-14 12:25 |只看该作者

回复 #7 zealotcat 的帖子

不会。
C++是兼容C语法的(准确的说是目前兼容c89语法)。

ps:这个好像偶的一同事写的代码。

论坛徽章:
0
9 [报告]
发表于 2007-11-17 22:55 |只看该作者
原帖由 cccccc 于 2007-11-14 10:36 发表
主要是为了位操作


使用位域的目的是为了节省内存空间,反而避免了用位操作来获取各个成员的值。

论坛徽章:
0
10 [报告]
发表于 2007-11-19 12:44 |只看该作者
冒号在这里是什么意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP