MATLAB コードからのコード生成用のストレージ クラス
Embedded Coder® のライセンスを所有している場合、ストレージ クラスを使用して、C/C++ コードから生成される C/C++ コード内のグローバル変数の宣言と定義を制御できます。
コード生成のコンテキストにおいては、"ストレージ クラス" は生成コード内の変数の宣言と定義を決定する仕様です。コード生成のストレージ クラスという用語は、C 言語の用語 "ストレージ クラス指定子" と同じものではありません。
ストレージ クラスは生成されたコードを外部コードと統合するのに役立ちます。生成された変数を外部コードで認識されるようにすることができます。また、外部コードで宣言された変数を生成コードで認識されるようにすることもできます。MATLAB® コードからのコード生成の場合、グローバル変数に対してのみストレージ クラスを使用できます。ストレージ クラスによって以下が決まります。
グローバル変数の宣言と定義のファイルの配置。
グローバル変数を外部コードからインポートするか、外部コードで使用するためにエクスポートするか。
ストレージ クラスをグローバル変数に代入するには、MATLAB コードで coder.storageClass 関数を使用します。C/C++ ライブラリまたは実行可能ファイルの生成に Embedded Coder プロジェクトまたは構成オブジェクトを使用する場合のみ、コード ジェネレーターで coder.storageClass の呼び出しが認識されます。
coder.storageClass の構文は次のようになります。
coder.storageClass(global_name, storage_class)
global_name はグローバル変数の名前です。文字ベクトルとして指定します。global_name はコンパイル時の定数でなければなりません。
storage_class は次の値のいずれかになります。
| ストレージ クラス | 説明 |
|---|---|
'ExportedGlobal' |
|
'ExportedDefine' | ヘッダー ファイル |
'ImportedExtern' | ヘッダー ファイル |
'ImportedExternPointer' | ヘッダー ファイル |
ストレージ クラスには次の要件と制限があります。
グローバル変数へのストレージ クラスの代入は、グローバル変数を宣言する関数で行います。ストレージ クラスを複数の関数で代入する必要はありません。
グローバル変数にストレージ クラスを代入した後に、そのグローバル変数に別のストレージ クラスを代入することはできません。
定数のグローバル変数にストレージ クラスを代入することはできません。
ExportedDefineストレージ クラスをもつグローバル変数は、スカラーでなければなりませんが、複素数またはマルチワードのスカラーであってはなりません。グローバル変数は読み取り専用でなければならず、コードで書き込むことはできません。
グローバル変数にストレージ クラスを代入しない場合、宣言の場所を除き、変数は 'ExportedGlobal' ストレージ クラスの場合と同じように動作します。ストレージ クラスが 'ExportedGlobal' の場合、ファイル でグローバル変数が宣言されます。グローバル変数にストレージ クラスがない場合は、ファイル entry_point_name.h で変数が宣言されます。entry_point_name_data.h