Main Content

グローバル構造体変数と共に使用するための C 構造体型の命名

この例では、グローバル構造体向けに生成されたコードで使用するために C 構造体型に名前を付ける方法を示します。

構造体変数に使用するために C 構造体型に名前を付けるには、coder.cstructname を使用します。ただし、関数内のグローバル変数に coder.cstructname を直接適用することはできません。代わりに、次のいずれかの方法で C 構造体型名を指定します。

  • コマンド ラインで、coder.cstructname を使用して C 構造体型に名前を付ける型オブジェクトを作成します。codegen を実行するときに、グローバル変数がその型をもつことを指定します。

  • MATLAB® Coder™ アプリでは、グローバル変数の定義および初期化後に、構造体のプロパティのダイアログ ボックスで C 構造体型名を指定します。

また、これらの方法を使用してグローバル cell 配列の C 構造体型に名前を付けることができます。

グローバル変数を使用する MATLAB 関数の作成

グローバル変数 g のフィールド a を返す MATLAB® 関数 getmyfield を作成します。

type getmyfield
function y = getmyfield()
% Copyright 2018 The MathWorks, Inc.
%#codegen

global g;
y = g.a;
end

コマンド ラインでの C 構造体型名の指定

  1. グローバル構造体 g を定義および初期化します。

  2. coder.cstructname を使用して g のプロパティをもつ型オブジェクト T を作成し、生成された C 構造体型 mytype に名前を付けます。

  3. g が型 T をもつグローバル変数であると指定して、getmyfield のコードを生成します。

global g
g = struct('a',5);
T = coder.cstructname(g,'mytype');
codegen -config:lib -globals {'g',T} getmyfield
Code generation successful.

生成されたコードでは、g は型 mytype をもちます。

mytype g;

生成された C 構造体型 mytype は次のとおりです。

typedef struct {
  double a;
} mytype;

MATLAB Coder アプリでの C 構造体型名の指定

  1. MATLAB Coder アプリを開いて、getmyfields の生成するコードを指定します。

  2. [入力の型を定義] ページで、[グローバルの追加] をクリックします。

  3. グローバル変数 g の横にあるフィールドをクリックします。次に、Define Initial Value をクリックします。

  4. struct('a',5)」と入力します。

  5. g に使用する C 構造体型名を指定するには、ギア アイコンをクリックします。

  6. [プロパティ] ダイアログ ボックスで、[C の型定義名] の横に mytype と入力します。

あるいは、ワークスペースで g または g の型オブジェクトを定義した場合、g または型オブジェクトを初期値として入力できます。

参考

関連するトピック