生成されたC/ c++ main関数の例の構造
生成されたC / c++コードを使用するアプリケーションをビルドする場合,生成されたコードを呼び出すC / c++主要関数を提供しなければなりません。
既定では,C / c++ソースコード,スタティックライブラリ,ダイナミックライブラリおよび実行可能ファイルのコード生成用に,MATLAB®编码器™はC/ c++ main関数の例を生成します。この関数は,生成されたc / c++コドのアプリケションへの組み込みに役立テンプレトです。主机関数の例は動的に割り当てられたデ、タなどのデ、タを宣言して初期化します。これは,エントリポaapl .ント関数を呼び出しますが,エントリポaapl .ント関数が返す値は使用しません。主関数の例を使用するには、メイン ソース ファイルとヘッダー ファイルの例をビルド フォルダー以外の場所にコピーしてから、アプリケーションの要件を満たすように新しい場所でファイルを変更します。
MATLAB编码器は,ビルドフォルダ,の例子
サブフォルダで主関数の例に対するソスファルとヘッダファルを生成します。Cコド生成の場合,ファルc
とmain.h
を生成します。c++コド生成の場合,ファルmain.cpp
とmain.h
を生成します。
ファereplicationルc
またはmain.cpp
の内容
メ▪▪ンソ▪▪スファ▪▪ルの例c
またはmain.cpp
の場合,MATLAB编码器は,次のセクションを生成します。
既定では,MATLAB编码器は,アプリケーションで使用する主要関数の例を変更する際に役立つコメントもメインソースファイルの例に生成します。
@ @ @ @ @ @ @ @ @ @ @ @ @ @
このセクションにはメインソースファイルの例に存在しないコードを呼び出す場合に必要なヘッダーファイルが含まれます。メインソースファイルの例を変更する際に外部関数を呼び出す場合,その他すべての必要なヘッダーファイルを含めます。
関数宣言
このセクションはメインソースファイルの例で定義された引数の初期化関数とエントリポイント関数用の関数のプロトタイプを宣言します。関数定義に加えた変更と一致するように関数のプロトタ@ @プを変更します。メ▪▪ンソ▪▪スファ▪▪ルの例で定義した関数用に新しい関数のプロトタイプを宣言します。
引数の初期化関数
このセクションはエントリポ▪▪ント関数が引数として使用する各デ▪▪タ型の初期化関数を定義します。引数の初期化関数は,引数のサ,ズを既定値に初期化し,デ,タの値をゼロに初期化します。次に,関数は初期化したデ,タを返します。これらのサズとデタ値をアプリケションの要件を満たすように変更します。
サ@ @ズの次元< dimSizes >
をも引数とmatlab c / c++デタ型< baseType >
の場合,メ@ @ @スファ@ @ @ @ @ @ @argInit_ < dimSizes > _ < baseType >
で初期化関数が定義されます。たとえば,MATLABタイプのデータが双である5行5列の配列の場合,メインソースファイルの例は引数の初期化関数argInit_5x5_real_T
を定義します。
MATLAB编码器は引数の初期化関数の名前を次のように変更します。
いずれかの次元が可変サ电子邮箱ズの場合,MATLAB编码器はこれらの次元のサ@ @ズを
d <最大尺寸>
として指定します。ここで,<最大尺寸>
はその次元の最大サ@ @ズになります。たとえば,最初の次元の静的サイズが2で2番目の次元のサイズが最大10まで変更可能なMATLABのデータ型双をもつ配列の場合,メインソースファイルの例は引数の初期化関数argInit_2xd10_real_T
を定義します。いずれかの次元が制限なしの場合,MATLAB编码器はこれらの次元のサ@ @ズを
无限
として指定します。初期化関数の戻り値の型が
emxArray
の場合,MATLAB编码器は関数をemxArray
へ返すポ▪▪ンタ▪▪として定義します。初期化関数の名前の長さが構成設定の関数名に対して設定された最大文字数を超過すると,MATLAB编码器は識別子を関数名の先頭に追加します。次に,MATLAB编码器は関数名を識別子の長さに許容される最大文字数まで切り捨てます。
メモ
既定では,生成された識別子に許容される最大文字数は31です。MATLAB编码器アプリを使用して識別子の最大の長さに対して値セットを指定するには,コ,ド生成設定の[コ,ド外観]タブで[識別子の最大の長さ]値を選択します。コマンドラe.c.ンe.c.ンタe.c.フェe.c.スを使用して識別子の最大長さに対して値セットを指定するには,
MaxIdLength
構成オブジェクト設定の値を変更します。
エントリポ@ @ント関数
このセクションは各matlabエントリポescント関数の関数を定義します。Matlab関数foo.m
の場合,メmain_foo
を定義します。この関数は変数を作成し,c / c++ソス関数foo.c
またはfoo.cpp
で必要なデ,タ初期化関数を呼び出します。これによってこのc / c++ソス関数が呼び出されますが,結果は返されません。main_foo
を変更して,アプリケ,ションの必要に応じて入力を受け取り出力を返すようにします。
主関数
このセクションは次を実行する主要
関数を定義します。
出力言語がcの場合,変数
命令行参数个数
とargv
を宣言して名前を付けますが,それらを无效にキャストします。出力言語がc++の場合,生成された主の例は変数命令行参数个数
とargv
を宣言しますが,名前は付けません。エントリポ▪▪ント関数をそれぞれ1回ず▪▪呼び出します。
コド生成に対して宣言された最初のmatlabエントリポント関数
喷火
の名前である終了関数foo_terminate
を呼び出します。主要
関数で呼び出されるエントリポaapl . exeント関数が複数ある場合でも,終了関数を1回のみ呼び出します。ゼロを返します。
既定では,主要
関数の例は初期化関数foo_initialize
を呼び出しません。コードジェネレーターは,生成されたC / c++エントリポイント関数の先頭に初期化関数の呼び出しを含めます。生成されたコードには,複数のエントリポイント関数がある場合でも,初期化関数が自動的に一度だけ呼び出されることを確認するチェックも含まれます。
生成されるエントリポ@ @ント関数が初期化関数の呼び出しを含まないようにすることもできます。この選択を行う場合,次のいずれか1を行います。
编码器。CodeConfig
オブジェクトまたは编码器。EmbeddedCodeConfig
オブジェクトでRunInitializeFcn
を假
に設定します。MATLAB编码器アプリで,[すべての設定]タブで[初期化関数を自動的に実行]を
[いいえ]
に設定します。
この選択を行うと,主要
関数の例には初期化関数foo_initialize
の呼び出しが含まれます。
生成された初期化関数と終了関数の使用を参照してください。
アプリケ,ションの要件を満たすように,主要
の入出力およびエントリポ@ @ント関数などの主要
関数を変更します。
ファereplicationルmain.h
の内容
メ▪▪ンヘッダ▪▪ファ▪▪ルの例main.h
の場合,MATLAB编码器は次を生成します。
既定では,MATLAB编码器は,アプリケ,ションで使用する主関数の例を変更する際に役立コメントもmain.h
に生成します。
インクルードガード
main.h
は▪▪ンクル▪▪ドガ▪ドを使用してファ▪▪ルの内容が複数回▪▪ンクル▪ドされないようにします。インクルードガードには#如果未定义
構造内に▪▪ンクル▪▪ドファ▪▪ルと関数宣言が含まれています。
@ @ @ @ @ @ @ @ @ @ @ @ @ @
main.h
にはその内部で定義されていないコドを呼び出すために必要なヘッダファルが含まれています。
関数宣言
main.h
はメ▪▪ンソ▪▪スファ▪▪ルの例c
またはmain.cpp
で定義されるmain関数の関数プロトタ主机プを宣言します。