主要内容

MISRA C++:2023 Rule 5.13.3

Octal constants shall not be used

自 R2024b 起

描述

Octal constants shall not be used. 1

理由

八进制常量由前导零予以指示。您可能会将八进制常量与带有冗余前导零的十进制常量混淆。

\ 开头的八进制转义序列是合规的。

Polyspace 实现

规则检查项会针对以前导零开头的常量报告违规。

故障排除

如果您预期会出现违规,而 Polyspace® 未报告该违规,请参阅诊断为何编码规范违规未按预期显示

示例

全部展开

检查项会标记所有八进制常量(零除外)。

在此示例中:

  • 八进制转义序列包含数字 9,而 9 并非八进制数字。此转义序列具有实现定义的行为。

  • 八进制转义序列 \100 表示数字 64,但符合此规则。

void func(void) {
  int busData[6];
  
  busData[0] = 100;
  busData[1] = 108;
  busData[2] = 052;      //Noncompliant
  busData[3] = 071;      //Noncompliant
  busData[4] = '\109';   //Compliant
  busData[5] = '\100';   //Compliant

}

检查信息

组:词法规范
类别:必需
PQL 名称:std.misra_cpp_2023.R5_13_3

版本历史记录

在 R2024b 中推出


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.