グローバル構造体変数と共に使用するための C 構造体型の命名
この例では、グローバル構造体向けに生成されたコードで使用するために、コマンド ラインで C 構造体型に名前を付ける方法を示します。
構造体変数に使用するために C 構造体型に名前を付けるには、coder.cstructname を使用します。ただし、関数内のグローバル変数に coder.cstructname を直接適用することはできません。代わりに、coder.cstructname を使用して、C 構造体型に名前を付ける型オブジェクトを作成します。codegen を実行するときに、グローバル変数がその型をもつことを指定します。この方法を使用してグローバル cell 配列の C 構造体型に名前を付けることもできます。
あるいは、MATLAB® Coder™ アプリを使用してグローバル構造体変数の C 構造体型に名前を付けることもできます。アプリでグローバル構造体変数を定義した後、変数定義で [型名] ボタンをクリックし、C 構造体型名を入力します。MATLAB Coder アプリでのグローバル変数の定義を参照してください。
グローバル変数を使用する MATLAB 関数の作成
フィールド f1 を返す getmyfield という名前の MATLAB® 関数を作成します。このフィールドは、グローバル構造体変数 g のフィールドです。
type getmyfieldfunction y = getmyfield %#codegen global g; y = g.f1; end
C 構造体型名の指定
グローバル構造体 g を定義および初期化します。その後、coder.cstructname を使用して g のプロパティをもつ T という名前の型オブジェクトを作成し、生成される C 構造体型 myStructType に名前を付けます。
global g g = struct("f1",5)
g = struct with fields:
f1: 5
T = coder.cstructname(g,"myStructType")T =
coder.StructType
1×1 myStructType struct
f1: 1×1 double
Edit Type Object
C 構造体型を使用したコードの生成
g が型 T をもつグローバル変数であると指定して、getmyfield のコードを生成します。生成されたコードで C 構造体型の定義を検証します。生成された C 構造体型の名前は myStructType です。
codegen -config:lib -globals {"g",T} getmyfield
Code generation successful.
file = fullfile("codegen","lib","getmyfield","getmyfield_types.h"); coder.example.extractLines(file,"/* Type Definitions */","#endif",1,1)
/* Type Definitions */
#ifndef typedef_myStructType
#define typedef_myStructType
typedef struct {
double f1;
} myStructType;
#endif /* typedef_myStructType */