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)を参照してください。
は、生成する 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
を作成します。
この構文は MATLAB Function ブロックで使用できません。
例
入力引数
制限
coder.cstructname
はグローバル変数に直接適用できません。グローバル変数で使用する構造体型に名前を付けるには、coder.cstructname
を使用して、構造体型に名前を付ける型オブジェクトを作成します。次に、codegen
を実行するときに、グローバル変数にその型があることを指定します。グローバル構造体変数と共に使用するための C 構造体型の命名 (MATLAB Coder)を参照してください。cell 配列入力の場合、外部で定義された構造体のフィールド名は
f1
、f2
などでなければなりません。coder.cstructname
はクラス プロパティに直接適用できません。
ヒント
コード ジェネレーターで構造体フィールドの C/C++ 型を判断する方法の詳細については、生成コードの型への MATLAB 型のマッピング (MATLAB Coder)を参照してください。
構造体配列で
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 配列入力の指定 (MATLAB Coder)を参照してください。coder.CellType
オブジェクトで使用すると、coder.cstructname
は永続的に異種混合のcoder.CellType
オブジェクトを作成します。
行優先および列優先の配列レイアウトのプロジェクトで
coder.cstructname
という名前の構造体を使用すると、特定の状況において、コード ジェネレーターはこの構造体名の先頭にrow_
またはcol_
を追加して、構造体の名前を変更します。この名前変更により、両方の配列レイアウトで使用される型に固有の型定義が提供されます。これらのヒントは MATLAB Function ブロックにのみ適用されます。
MATLAB Function ブロックの入力構造体と出力構造体はバス信号に関連付けられます。構造体型に対して生成された名前は、バス信号名に由来します。
coder.cstructname
を使用して、入力信号と出力信号の構造体型に名前を付けないでください。MATLAB Function ブロック内での構造体の作成を参照してください。コード ジェネレーターは、
coder.cstructname
で構造体型に名前を付けた場合でも、識別子の命名規則に従って構造体型の名前を生成します。Embedded Coder がある場合は、命名規則をカスタマイズできます。生成される識別子の構成 (Embedded Coder)を参照してください。
拡張機能
バージョン履歴
R2011a で導入