☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

禁用位域

6.9.5 ID_forbidBitfield
目录 › next › previous

位域改变了类型约定俗成的取值范围和存储方式,易造成理解上的偏差,增加维护成本,在不受特定协议限制的代码中不应使用位域。

位域与“引用”等 C++ 概念有冲突,而且标准在位域的内存布局等方面定义的不够充分,存在很多由实现定义的内容,要特别注意的是多线程访问位域还会造成数据竞争,参见 ID_bitfieldDataRaces。

示例:

struct A {
    int x: 3;   // Non-compliant
} a;

int& x = a.x;   // Error

相关

ID_exceededBitfield ID_singleSignedBitfield ID_bitfieldDataRaces ID_forbidEnumBitfield

依据

ISO/IEC 9899:1999 J.3.9(1)-implementation ISO/IEC 9899:2011 J.3.9(1)-implementation ISO/IEC 14882:2003 9.6(1)-implementation ISO/IEC 14882:2003 9.6(3) ISO/IEC 14882:2011 9.6(1)-implementation ISO/IEC 14882:2011 9.6(3) ISO/IEC 14882:2017 12.2.4(1)-implementation ISO/IEC 14882:2017 12.2.4(3)
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.