| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:位字段移植性问题
只看楼主 加入收藏
至尊幽蓝
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-7-30
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
位字段移植性问题
书上说,位字段难以移植,谁能给解释下怎么个难移植啊。
当然,不同的平台,同一组位运算符操作,可能产生不同的结果,要是不用位运算符,只用位字段结构成员名,就不会有事了吧。
还有,不同的机器上需要不同的掩码,通过构造一个联合,包含一个位字段结构或一个int,让每个字段对象分别为所要的值,其它为0,读取联合中int的值不就是掩码吗。
是这样吗?
搜索更多相关主题的帖子: 性问题 联合 
2015-08-02 12:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
你说位字段是什么?

授人以渔,不授人以鱼。
2015-08-02 17:31
至尊幽蓝
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-7-30
收藏
得分:0 
回复 2楼 TonyDeng
struct A
    {
        unsigned b:2;
        unsigned c:3;
        unsigned d:3;
    };
类似这种,b,c,d都是位字段
2015-08-02 18:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那你觉得移植到其他机器上A都与这里的A是同一尺寸?里面的unsigned呢,也是一样的?不同尺寸的数据,你怎么掩?

授人以渔,不授人以鱼。
2015-08-02 18:05
至尊幽蓝
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-7-30
收藏
得分:0 
2个问题:
1.你的意思就是要进行位运算时,不知道怎么算,也就是掩码不知道是多少,那我只使用位字段的存储功能,不写位运算的代码,是不是就可移植了。
2.关于怎么构造掩码的问题,我想是不是可以这样,先有前面的字段结构A,然后声明个联合:
程序代码:
union E
{
    struct A;
    unsigned F;
}XX;

然后
XX.F=0;
A.b=3;

此时,掩码就是XX.F的值。想构造什么样的掩码,对联合中的A相应位赋值,其它位是0,再从F获得掩码。
你说这样行吗?
2015-08-02 18:55
至尊幽蓝
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-7-30
收藏
得分:0 
回复 4楼 TonyDeng
更正:

XX.F=0;
XX.A.b=3;
3就是11b
2015-08-02 18:57
快速回复:位字段移植性问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017293 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved