Main Content

構造体の使用制限

MATLAB は構造体へのポインターを返す

MATLAB® は構造体へのポインターを返します。値で返すことはサポートされません。

入力/出力引数では struct 配列はサポートされない

C struct 配列を変更する関数への入力引数または出力引数として MATLAB struct 配列を渡すことはサポートされていません。

構造体は他の構造体へのポインターを含むことができない

入れ子にされた構造体または構造体へのポインターを含む構造体はサポートされません。

MATLAB 構造体引数の要件

MATLAB 構造体を外部ライブラリ関数に渡す場合、フィールド名は次の要件を満たさなければなりません。

  • 各 MATLAB フィールド名は、ライブラリ構造体定義内のフィールド名と一致しなければなりません。

  • MATLAB 構造体には、ライブラリ構造体定義内にないフィールドを含めることはできません。

  • MATLAB 構造体に含まれるフィールドの数が、ライブラリ構造体で定義されているものよりも少ない場合、MATLAB は未定義のフィールドをゼロに設定します。

  • フィールド名では大文字と小文字が区別されます。たとえば、ライブラリ mylib に次の構造体定義をもつ関数 myfunc が含まれているとします。

    struct S {
        double len;
    };

    フィールド名は len です。フィールド名 Len を使って構造体を myfunc に渡すと、MATLAB にエラーが表示されます。

    S.Len = 100;
    calllib('mylib','myfunc',S)

C の struct フィールド名の要件

MATLAB が C の struct 定義を読み込む際、MATLAB のフィールド名では大文字と小文字が区別されません。たとえば、次の定義を含むライブラリを読み込むとき、MATLAB によって 2 つのフィールドが作成されることはありません。

struct S {
    double Num;
    double num;
};

関連するトピック