構造体の使用制限
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; };