【发布时间】:2016-07-05 07:19:40
【问题描述】:
我遇到了很多关于位域的各种问题的 cmet 断言位域是不可移植的,但我一直无法找到确切解释原因的来源。
从表面上看,我会假设所有位域都只是编译为相同位移代码的变体,但显然肯定还有更多,否则就不会对它们产生如此强烈的厌恶。
所以我的问题是是什么让位域不可移植?
【问题讨论】:
-
在什么情况下他们被称为“不安全”?添加链接?
-
我认为这主要是人们滥用位域来提取其他数据类型在子字节级别的表示,这是完全不可移植的。
-
当然,如果您将位域用于安全用例,那么大/小位域布局与大/小整数布局无关。不过,人们似乎对不安全的用例更感兴趣。
-
正确使用,位域是安全且可移植的。您可以滥用位字段并创建不可移植的代码,但这与滥用整数、指针等没有什么不同。
标签: c++ portability bit-fields