生成コ,ドの型へのMATLAB型のマッピング
コ,ドジェネレ,タ,は,matlab®コドで使用するデタ型に対応するc / c++のデタ型を生成します。生成されるデタ型はタゲットプラットフォムとコンパラに依存します。コ,ドジェネレ,タ,は,組み込みのcデ,タ型(短
、长
、int
など),またはcの类型定义
ステ,トメントを使用して定義されるカスタムデ,タ型のいずれかを生成できます。既定では,コードジェネレーターはスタンドアロンコード(自由,dllまたはexe)に対しては組み込みデータ型,墨西哥人コードに対してはカスタムデータ型を生成します。組み込みのcの型を使用するには,コ,ド生成構成オブジェクトのDataTypeReplacement
プロパティを変更するか,MATLAB编码器™アプリを使用します。詳細にいては,生成コ,ドで使用されるデ,タ型の指定を参照してください。
カスタムc / c++型を生成するために,コドジェネレタは,fullfile (matlabroot“外来的”,“包括”)
に配置されているヘッダファルtmwtypes.h
の事前定義されたデ,タ型を使用します。コードジェネレーターは,MATLABコードの解析に基づいてカスタムデータ型を生成することもできます。カスタムデタ型は,コド生成ディレクトリに配置されているファルrtwtypes.h
とmyFunction_types.h
で定義されます。myFunction
は最上位の関数の名前です。コードジェネレーターは,MATLAB内に存在するすべてのデータ型に対してコードを生成できるわけではありません。C/ c++コ,ド生成でサポ,トされているmatlab言語機能を参照してください。
組み込みのcデタ型を使用しないときは,コドジェネレタは以下のデタ型を生成します。
Matlabデ,タ型 | 対応するカスタムc / c++デタ型 |
---|---|
逻辑 |
boolean_T |
字符 |
char_T |
字符串 |
rtString |
int8 |
int8_T |
int16 |
int16_T |
int32 |
int32_T |
int64 |
int64_T |
uint8 |
uint8_T |
uint16 |
uint16_T |
uint32 |
uint32_T |
uint64 |
uint64_T |
单 |
real32_T |
双 |
real_T |
复杂的 |
複素数型を参照してください。 |
结构体 |
構造体の型を参照してください。 |
fi |
固定小数点型を参照してください。 |
変数が参照渡しされるとき,対応するカスタムデ,タ型は逆参照演算子を使用します。たとえば,参照渡しされる際のint8
の対応するカスタムc / c++デタ型はint8_T *
です。
動的に割り当てられた配列はカスタムemxArray_
型にマッピングされます。たとえば,動的に割り当てられた字符
配列はemxArray_char_T
の型にマッピングされます。動的に割り当てられた双配列はemxArray_real_T
型にマッピングされます。動的な割り当ては,たとえばコンパcoder.varsize
を使用して可変サ@ @ズの配列を作成する場合に発生します。可変サ化学键ズ配列の詳細に化学键いては,生成された関数▪▪ンタ▪フェ▪▪スでのc配列の使用を参照してください。
複素数型
Matlabでは,実数/複素数はデ,タ型のプロパティとして定義されます。次の表に,コードジェネレーターがMATLABの複素数データ型に対して使用する事前定義されたデータ型を示します。
Matlabの複素数デ,タ型 | 対応するカスタムc / c++デタ型 |
---|---|
int8 |
cint8_T |
int16 |
cint16_T |
int32 |
cint32_T |
int64 |
cint64_T |
uint8 |
cuint8_T |
uint16 |
cuint16_T |
uint32 |
cuint32_T |
uint64 |
cuint64_T |
单 |
creal32_T |
双 |
creal_T |
コ,ドジェネレ,タ,は,各複素数値を,実数部再保险
と虚数部即时通讯
をも構造体として定義します。例として,tmwtypes.h
からのcreal32_T
の类型定义
を参照してください。
typedef struct {real32_T re;/*实组件*/ real32_T im;/*虚组件*/}creal32_T;
creal32_T
型の変数x
を定義するとします。生成されたコ,ドは,実数部をx.re
として,虚数部をx.im
としてアクセスします。
C/ c++ラ▪▪ブラリが異なる表現を必要とする場合,たとえばcoder.cstructname
を使用して,MATLAB编码器の複素数型の独自バ,ジョンを定義することができます。ただし,定義において実数部には再保险
,虚数部には即时通讯
という名前を使用しなければなりません。
詳細にいては,複素数デ,タのコ,ド生成を参照してください。
構造体の型
MATLAB编码器は,構造体をフィ,ルド単位でc / c++の型にマッピングします。Matlab定義での構造体フィ,ルドの順序が保持されます。生成されるc / c++構造体の型の名前を制御するか,定義を指定するには,関数coder.cstructname
を使用します。動的メモリ割り当てを使用しない場合は,構造体内の配列は1次元の配列に変換され,ポインターには変換されません。詳細にいては,構造体を参照してください。
固定小数点型
C/ c++デ,タ型はfi
オブジェクトのnumerictype
プロパティによって決定されます。既定では,コドジェネレタは組み込みのc / c++型の使用を試みます。ただし,カスタムc / c++デ,タ型を代わりに使用するよう選択することもできます。次の表は,Signedness
、字
およびFractionLength
の各プロパティがどのようにカスタムc / c++デタ型を決定するかを示しています。カスタムC / c++データ型は,ワードサイズに基づいて,固定小数点の値を格納できる一段大きいターゲットワードサイズとなります。整数型の符号は,固定小数点型の符号と一致します。
符号属性 | 語長 | 小数部の長さ | 対応するカスタムc / c++デタ型 |
---|---|---|---|
1 | 8 | 7 | int8_T |
1 | 13 | 10 | int16_T |
1 | 16 | 15 | int16_T |
0 | 19 | 15 | uint32_T |
文字ベクトル
MATLAB编码器ソフトウェアは,matlab文字ベクトルをc / c++文字配列にマッピングします。これらの文字配列は,空で終了しないためC/ c++文字列ではありません。MATLAB文字ベクトルを、C/C++ 文字列を必要とする外部 C/C++ コードに渡す場合、生成される C/C++ 文字配列は null で終了しなければなりません。null で終了する C/C++ 文字配列を生成するには、MATLAB 文字ベクトルの終わりに 0 を追加します。たとえば、['示例文本' 0]
とします。これをしないと,文字列を想定している生成コードの動作がコンパイラエラーや警告なしに停止する可能性があります。
マルチワ,ドの型
マルチワードの型は,ターゲットハードウェアがMATLABデータ型を組み込みのC / c++型に格納できないときに生成されるカスタム型です。マルチワ,ドの型は,整数の配列を含むc / c++構造体型として生成されます。配列の次元は、タ、ゲットハ、ドウェアの最も幅広の整数型のサ、ズに依存します。
128年たとえばビットの固定小数点型の場合,ターゲットハードウェアの最も幅広の整数型が32ビットであれば,ソフトウェアは4つの32ビット整数からなる配列を1つ含む構造体を生成します。
Typedef struct {unsigned int chunk [4];} uint128m_T;
タゲットハドウェアの最も幅広の整数型が64ビットのサズをも长
であれば,コードジェネレーターは2つの64ビット長の型からなる配列を1つ含む構造体を生成します。
类型定义struct {unsigned long chunks[2];} uint128m_T;
64年ビットの整数MATLAB型から生成されるC / c++データ型は,ターゲットハードウェアでの整数型のサイズに依存します。64ビットを格納するのに十分な幅をも組み込み型が存在しない場合,64ビットのMATLAB编码器型はカスタムマルチワ,ド型にマッピングされます。
参考
coder.cstructname
|coder.opaque