メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C:2023 Rule 7.1

Octal constants shall not be used

R2024a 以降

説明

ルール定義

Octal constants shall not be used 1 .

根拠

8 進数の定数は先頭の 0 で表されます。冗長な先頭の 0 のため、開発者は 8 進数の定数と 10 進数の定数を間違える可能性があります。

Polyspace 実装

マクロ定義で 8 進数の定数を使用している場合、そのマクロが使用されない場合でもルール チェッカーはこの問題にフラグを設定します。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

例 - 8 進数の定数の使用
#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® が 8 進数の定数の使用にフラグを設定します。

チェック情報

グループ: リテラルおよび定数
カテゴリ: 必要
AGC カテゴリ: 推奨

バージョン履歴

R2024a で導入

すべて展開する


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.