Main Content

列挙型の受け渡し例

関数 readEnum

shrlibsample ライブラリの関数 readEnum は、入力引数に対応する文字列を表示します。

EXPORTED_FUNCTION char* readEnum(TEnum1 val)
{
	 static char outputs[][20] = { 
        {"You chose en1"}, 
        {"You chose en2"}, 
        {"You chose en4"}, 
        {"enum not defined"}, 
        {"ERROR"} };

	 switch (val) {
        case en1: return outputs[0];
        case en2: return outputs[1];
        case en4: return outputs[2];
        default : return outputs[3];
    }
    return outputs[4];
}

関数シグネチャは次のようになります。

戻り値の型名前引数
cstringreadEnum(Enum1)

Enum1 入力の値は、shrlibsample.h ヘッダー ファイルで定義されます。

typedef enum Enum1 {en1 = 1, en2, en4 = 4} TEnum1;

列挙値の表示

この例では、列挙値を shrlibsample ライブラリの関数 readEnum に渡す方法を説明します。ライブラリを読み込みます。

if not(libisloaded('shrlibsample'))
    addpath(fullfile(matlabroot,'extern','examples','shrlib'))
    loadlibrary('shrlibsample')
end

MATLAB® では、列挙文字列またはそれと等価の数値として列挙型を表すことができます。string 引数を指定して readEnum を呼び出します。

calllib('shrlibsample','readEnum','en4')
ans = 
'You chose en4'

等価の数値引数を指定して readEnum を呼び出します。Enum1 の定義により、列挙型 en4 は 4 と等価であることが宣言されています。

calllib('shrlibsample','readEnum',4)
ans = 
'You chose en4'

関連するトピック