メインコンテンツ

列挙型の定義 (-enum-type-definition)

enum を基本データ型で表す方法の指定

説明

解析では、列挙値および選択した定義に応じ、さまざまな基本データ型を使用して列挙型を表すことができます。このオプションを使用する場合、各 enum 型は列挙値を保持できる最小の整数型で表されます。

このオプションは、[構成] ペインの [ターゲットおよびコンパイラ] ノードで使用できます。

オプションの設定

以下のいずれかの方法を使用してオプションを設定します。

  • Polyspace® ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [ターゲットおよびコンパイラ] ノードを選択してから、このオプションの値を選択します。

  • Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [ビルド] タブで [ターゲットおよびコンパイラ] を選択してから、オプション [プロセッサ] の設定を構成します。[プロセッサの編集] ダイアログで、オプション [enum の潜在型] の値を選択します。詳細については、プロセッサの詳細を参照してください。

  • コマンド ラインとオプション ファイル: オプション -enum-type-definition を使用します。コマンド ライン情報を参照してください。

このオプションを使用する理由

コンパイラは enum 型の変数を基本整数型の定数として表します。このオプションを使用して、コンパイラをエミュレートできるようにします。

コンパイラ設定をチェックするには、次を行います。

  1. 通常使用するコンパイラ設定を使用して、次のコードをコンパイルします。

    enum { MAXSIGNEDBYTE=127 } mysmallenum_t;
    
    int dummy[(int)sizeof(mysmallenum_t) - (int)sizeof(int)];
    
    コンパイルに失敗した場合、auto-signed-first または auto-unsigned-first のどちらかを使用しなければなりません。

  2. 通常使用するコンパイラ設定を使用して、次のコードをコンパイルします。

    #include <limits.h>
    
    enum { MYINTMAX = INT_MAX } myintenum_t;
    
    int dummy[(MYINTMAX + 1) < 0 ? -1:1];
    

    コンパイルに失敗した場合、このオプションには auto-signed-first を使用し、それ以外の場合は auto-unsigned-first を使用します。

設定

既定値: defined-by-compiler

defined-by-compiler

gnu、clang、および tasking 以外のすべてのコンパイラに対して符号付き整数型を使用します。

gnu および clang コンパイラでは、リスト unsigned intsigned intunsigned longsigned longunsigned long longsigned long long からすべての列挙値を保持できる最初の型が使用されます。

tasking コンパイラでは、リスト charunsigned charshortunsigned shortintunsigned int からすべての列挙値を保持できる最初の型が使用されます。

auto-signed-first

リスト signed charunsigned charsigned shortunsigned shortsigned intunsigned intsigned longunsigned longsigned long longunsigned long long からすべての列挙値を保持できる最初の型を使用します。

auto-unsigned-first

以下のリストからすべての列挙値を保持できる最初の型を使用します。

  • 列挙値が正の場合: unsigned charunsigned shortunsigned intunsigned longunsigned long long

  • 1 つ以上の列挙値が負の場合: signed charsigned shortsigned intsigned longsigned long long

コマンド ライン情報

パラメーター: -enum-type-definition
値: defined-by-compiler | auto-signed-first | auto-unsigned-first
既定値: defined-by-compiler
例 (Bug Finder): polyspace-bug-finder -enum-type-definition auto-signed-first
例 (Code Prover): polyspace-code-prover -enum-type-definition auto-signed-first
例 (Bug Finder Server): polyspace-bug-finder-server -enum-type-definition auto-signed-first
例 (Code Prover Server): polyspace-code-prover-server -enum-type-definition auto-signed-first