メインコンテンツ

MISRA C:2012 Rule 8.12

Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique

説明

ルール定義

Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique 1 .

根拠

暗黙的に指定された列挙定数は先行する列挙定数に 1 を加えた値をもちます。最初の列挙定数が暗黙的に指定されている場合、その値は 0 です。明示的に指定された列挙定数は指定した値となります。

暗黙的に指定された定数と明示的に指定された定数が列挙子リスト内で混在する場合、プログラムは値を複製できます。そのような複製は意図されていない可能性があり、予期しない動作を引き起こす可能性があります。

Polyspace 実装

ルール チェッカーは、別の列挙定数と同じ値である暗黙的に指定された列挙定数が列挙内にある場合、その列挙にフラグを設定します。

レポート内の追加のメッセージ

The constant constant1 has same value as the constant constant2.

トラブルシューティング

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

すべて展開する

enum color1 {red_1, blue_1, green_1};   /* Compliant */
enum color2 {red_2 = 1, blue_2 = 2, green_2 = 3};       /* Compliant */
enum color3 {red_3 = 1, blue_3, green_3};     /* Compliant */
enum color4 {red_4, blue_4, green_4 = 1};     /* Non Compliant */
enum color5 {red_5 = 2, blue_5, green_5 = 2};     /* Compliant */
enum color6 {red_6 = 2, blue_6, green_6 = 2, yellow_6};     /* Non Compliant */

準拠している状況:

  • color1:すべての定数が暗黙的に指定されている。

  • color2:すべての定数が明示的に指定されている。

  • color3:暗黙的な指定と明示的な指定が混在しているが、すべての定数が一意の値である。

  • color5:暗黙的に指定された定数が一意の値である。

準拠していない状況:

  • color4:暗黙的に指定された定数 blue_4green_4 と同じ値である。

  • color6:暗黙的に指定された定数 blue_6yellow_6 と同じ値である。

チェック情報

グループ: 宣言と定義
カテゴリ: 必要
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.