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

控制条件应为 bool 型表达式

10.1.9 ID_nonBoolCondition
目录 › next › previous

如果控制条件均为 bool 型表达式,可使逻辑结构更清晰,有效避免隐式类型转换造成的问题。

示例:

void foo(int* p, size_t n, bool b)
{
    if (p) {     // Non-compliant
        ....
    }
    if (n) {     // Non-compliant
        ....
    }
    if (b) {     // Compliant
        ....
    }
}

例中 p 和 n 不应直接作为条件,b 为 bool 型,可直接作为条件。

应改为:

void foo(int* p, size_t n, bool b)
{
    if (p != NULL) {   // Compliant
        ....
    }
    if (n != 0) {      // Compliant
        ....
    }
    ....
}

循环条件、三元表达式的条件等所有可作为控制条件的表达式均受本规则限制。

例外:

if (int* p = bar()) {  // Let it go
    ....
}

C++03 允许将声明作为条件,这种情况可不受本规则限制。

相关

ID_nonBoolSubCondition

参考

MISRA C 2012 14.4 MISRA C++ 2008 5-0-13 MISRA C++ 2008 5-0-14 SEI CERT EXP20-C
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.