coder.cstructname
生成されたコードでの C 構造体に名前を付ける
構文
説明
coder.cstructname は、生成されたコードで構造体として表される MATLAB® 変数に使用する生成されたまたは外部で定義された C 構造体型に名前を付けます。
coder.cstructname( は、MATLAB 変数 var,structName)var に対して生成された C 構造体型に名前を付けます。入力 var には、構造体または cell 配列を指定できます。コードを生成する関数でこの構文を使用します。var を定義した後、var を最初に使用する前に coder.cstructname を配置します。var がエントリポイント (最上位レベル) 関数入力引数の場合、関数の最初の、制御フロー ステートメントの前に coder.cstructname を配置します。
coder.cstructname( は、var,structName,'extern','HeaderFile',headerfile)var に使用する C 構造体型の名前が structName で、この型が外部ファイル headerfileName で定義されていることを指定します。
ヘッダー ファイルを指定せずに 'extern' オプションを使用できます。ただし、コード ジェネレーターで #include ステートメントが正しい位置に生成されるようにヘッダー ファイルを指定することをお勧めします。
coder.cstructname( は、外部で定義された var,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)structName 構造体型に対する実行時のメモリ配置も指定します。Embedded Coder® があり、カスタムのコード置換ライブラリ (CRL) を使用している場合、コード ジェネレーターが構造体の配置を必要とする CRL 関数を一致させることができる配置を指定します。Data Alignment for Code Replacement (Embedded Coder)を参照してください。この構文は var が cell 配列の場合は使用できません。
は、生成する C 構造体型の名前を指定する構造体または cell 配列型のオブジェクト outtype = coder.cstructname(intype,structName)outtype を返します。coder.cstructname は、intype 入力型のプロパティを使用して outtype を作成します。次に、TypeName プロパティを structName に設定します。この構文を使用して、codegen -args オプションで使用する型オブジェクトを作成します。コードを生成する関数でこの構文を使用することはできません。この構文は MATLAB Function ブロックで使用できません。
は、外部で定義されている C 構造体型の名前と場所を指定する型オブジェクト outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile)outtype を返します。コード ジェネレーターは、型が outtype の変数に外部で定義された構造体型を使用します。この構文は MATLAB Function ブロックで使用できません。
は、C 構造体型の配置も指定する型オブジェクト outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)outtype を作成します。この構文は intype が coder.CellType オブジェクトまたは cell 配列の場合は使用できません。この構文は MATLAB Function ブロックで使用できません。
例
入力引数
制限
coder.cstructnameはグローバル変数に直接適用できません。グローバル変数で使用する構造体型に名前を付けるには、coder.cstructnameを使用して、構造体型に名前を付ける型オブジェクトを作成します。次に、codegenを実行するときに、グローバル変数にその型があることを指定します。グローバル構造体変数と共に使用するための C 構造体型の命名を参照してください。cell 配列入力の場合、外部で定義された構造体のフィールド名は
f1、f2などでなければなりません。coder.cstructnameはクラス プロパティに直接適用できません。
ヒント
コード ジェネレーターで構造体フィールドの C/C++ 型を判断する方法の詳細については、生成コードの型への MATLAB 型のマッピングを参照してください。
構造体配列で
coder.cstructnameを使用すると、配列の名前でなく、基本要素の構造体型の名前が設定されます。したがって、coder.cstructnameは構造体配列に適用できず、異なる C 構造体型の名前で配列に適用します。たとえば、次のコードは許可されません。2 番目のcoder.cstructnameは基本データ型の名前をmyStructArrayNameに設定しようとするため、これが前に指定した名前myStructNameと競合します。% Define scalar structure with field a myStruct = struct('a', 0); coder.cstructname(myStruct,'myStructName'); % Define array of structure with field a myStructArray = repmat(myStruct,4,6); coder.cstructname(myStructArray,'myStructArrayName');
coder.cstructnameを構造体配列の要素に適用すると、coder.cstructnameを構造体配列全体に適用した場合と同じ結果になります。coder.cstructnameを構造体配列の要素に適用する場合は、単一の添字を使用して要素を参照しなければなりません。たとえば、var(1)は使用できますが、var(1,1)は使用できません。coder.cstructnameをvar(:)に適用すると、coder.cstructnameをvarまたはvar(n)に適用した結果と同じ結果になります。異種混合 cell 配列は生成されたコード内で構造体として表されます。ここでは、cell 配列での
coder.cstructnameの使用について取り上げます。コードを生成する関数では、cell 配列変数で
coder.cstructnameを使用すると cell 配列は異種混合になります。したがって、cell 配列がエントリポイント関数入力で、その型が永続的に同種の場合、cell 配列でcoder.cstructnameは使用できません。coder.cstructnameを同種coder.CellTypeオブジェクトintypeで使用する場合、返されたオブジェクトは異種混合になります。したがって、coder.cstructnameは永続的に同種のcoder.CellTypeオブジェクトと一緒に使用できません。cell 配列が永続的に同種の場合の詳細については、コマンド ラインでの cell 配列入力の指定を参照してください。coder.CellTypeオブジェクトで使用すると、coder.cstructnameは永続的に異種混合のcoder.CellTypeオブジェクトを作成します。
行優先および列優先の配列レイアウトのプロジェクトで
coder.cstructnameという名前の構造体を使用すると、特定の状況において、コード ジェネレーターはこの構造体名の先頭にrow_またはcol_を追加して、構造体の名前を変更します。この名前変更により、両方の配列レイアウトで使用される型に固有の型定義が提供されます。これらのヒントは MATLAB Function ブロックにのみ適用されます。
MATLAB Function ブロックの入力構造体と出力構造体はバス信号に関連付けられます。構造体型に対して生成された名前は、バス信号名に由来します。
coder.cstructnameを使用して、入力信号と出力信号の構造体型に名前を付けないでください。MATLAB Function ブロック内での構造体の作成 (Simulink)を参照してください。コード ジェネレーターは、
coder.cstructnameで構造体型に名前を付けた場合でも、識別子の命名規則に従って構造体型の名前を生成します。Embedded Coder がある場合は、命名規則をカスタマイズできます。生成される識別子の構成 (Embedded Coder)を参照してください。
拡張機能
バージョン履歴
R2011a で導入