主要内容

MISRA C:2012 Rule 7.1

Octal constants shall not be used

描述

规则定义

Octal constants shall not be used 1 .

理由

八进制常量由前导零予以指示。开发人员可能会将八进制常量误认为是带有冗余前导零的十进制常量。

Polyspace 实现

如果您在宏定义中使用八进制常量,则即使未使用该宏,规则检查项也会将此问题标记出来。

故障排除

如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示

示例

示例 - 八进制常量的使用
#define CST     021              /* Noncompliant */
#if 010 == 01                    /* Noncompliant*/
#define CST 021                  
#endif

extern short code[5];
static char* str2 = "abcd\0efg";  /* Compliant */

void main(void) {
    int value1 = 0;               /* Compliant */
    int value2 = 01;              /* Noncompliant*/
    int value3 = 1;               /* Compliant */
    int value4 = '\109';          /* Compliant */

    code[1] = 109;                /* Compliant     - decimal 109 */
    code[2] = 100;                /* Compliant     - decimal 100 */
    code[3] = 052;                /* Noncompliant */
    code[4] = 071;                /* Noncompliant */

    if (value1 != CST) {          
        value1 = !(value1 != 0);  /* Compliant */
    }
}

在此示例中,Polyspace® 标记了八进制常量的使用。

检查信息

组:字面值和常量
类别:必需
AGC 类别:建议

版本历史记录

在 R2014b 中推出

全部展开


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.