カスタム データ型の共有ユーティリティ コードの生成
既定では、モデルでカスタム データ型 (Simulink.AliasType
オブジェクトまたは列挙型クラス) が使用される場合、コード ジェネレーターは対応する型定義 (typedef
) を
ファイルに配置します。複数のモデルからコードを生成する場合、各モデルは型定義を複製します。これらの重複した定義のため、生成されたコード本体を一体としてコンパイルすることができない場合があります。model
_types.h
ただし、単一の型定義が _sharedutils
フォルダーのヘッダー ファイルに配置されるようコード ジェネレーターを構成できます。この場合、モデルからコードを生成すると、型定義が _sharedutils
フォルダーに既に存在する場合、コード ジェネレーターは定義を複製せず、インクルード (#include
) によって定義を再利用します。
このメカニズムにより、以下を共有できます。
クラス
Simulink.AliasType
、Simulink.Bus
、およびSimulink.NumericType
からインスタンス化する Simulink® データ型オブジェクトこれらのオブジェクトの作成と使用の基本的な情報については、Manage Replacement of Simulink Data Types in Generated CodeとSimulink.Bus
を参照してください。スクリプト ファイルに
enum
クラスを作成するか、関数Simulink.defineIntEnumType
を使用するなどして、定義する列挙型。Simulink での列挙型の定義の基本的な情報については、Simulink モデルでの列挙型データの使用を参照してください。
複数のモデルでカスタム データ型を共有するには、次を行います。
データ型を定義します。たとえば、
Simulink.AliasType
オブジェクトを作成します。データ スコープとヘッダー ファイルのプロパティを、共有を有効にする特定の値に設定します。
データ型オブジェクトでは、
DataScope
プロパティを'Exported'
に設定し、オプションで、HeaderFile
プロパティによりヘッダー ファイル名を指定します。スクリプト ファイルで
enum
クラスとして定義した列挙型の場合は、getDataScope
メソッド (戻り値'Exported'
を使用) を実装し、オプションでgetHeaderFile
メソッドを実装します。関数
Simulink.defineIntEnumType
を使用して定義した列挙型の場合は、ペアの引数'DataScope'
を'Exported'
に設定し、オプションでペア引数'HeaderFile'
を指定します。モデルでデータ型を使用します。
各モデルからコードを生成する前に、モデル コンフィギュレーション パラメーター [共有コードの配置] を
[共有場所]
に設定します。モデルからコードを生成します。
メモ
カスタム データ型の定義が
_sharedutils
フォルダーのヘッダー ファイルに表示されるよう構成できます。モデルのビルドで_sharedutils
フォルダーに生成された共有ユーティリティ関数では、カスタム データ型名は使用されません。各モデルのコード フォルダーにあるモデル コードのみカスタム データ型名を使用します。