メインコンテンツ

識別子の書式の制御

この例では、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[識別子] ペインで [識別子の書式の制御] パラメーターを指定して、生成される識別子をカスタマイズする方法を示します。モデルのトレーサビリティを維持するには、生成されるコードに含まれる識別子名にモデルの増分リビジョンが与える影響を最小限に抑える必要があります。この例では、[識別子の書式の制御] パラメーターを指定して識別子名への影響を最小限に抑える方法を示します。

モデルの検査

IdentifierFormatting モデルを開きます。

model = 'IdentifierFormatting';
open_system(model)

このモデルには、2 つのサブシステム (multiply_by_2 および multiply_by_4) と、Stateflow® チャート (determine_if_positive) が含まれています。各サブシステムには Gain ブロックが含まれています。

モデル コンフィギュレーション パラメーターの検査

[モデル化] タブで [モデル設定] を選択して、[モデル コンフィギュレーション パラメーター] ダイアログを開きます。左側のペインで [コード生成]、[識別子] を選択します。

[サブシステムのメソッド] パラメーターを確認します。既定では、このパラメーターの値は $R$N$M$F です。$R トークンはモデル名 IdentifierFormatting に展開されます。$N トークンは、multiply_by_4 など、識別子に対応する Simulink オブジェクトの名前に展開されます。サブシステムごとに個別の出力メソッドと更新メソッドを生成した場合、$F トークンは生成されたメソッドごとに _Update または _Output に展開されます。

これらのトークンの展開後、コード ジェネレーターによって同じ名前の複数の識別子が生成される場合、名前の競合を防ぐために $M トークンが名前マングリング テキストに展開されます。

$N を使用しないサブシステム メソッド識別子の生成

[サブシステムのメソッド] パラメーターから $N トークンを削除します。

コードを生成します。生成されたコードには、モデル内のサブシステム用の次の関数が含まれています。

static void IdentifierFormatting_c(void);
static void IdentifierFormatting_a(void);

モデルは個別の出力および更新サブシステム メソッドを生成するように構成されていないため、$F トークンは展開されません。$R トークンはルート モデル名 IdentifierFormatting に展開されます。multiply_by_2 サブシステムと multiply_by_4 サブシステムの両方で IdentifierFormatting 関数名が生成されるため、識別子の名前の競合が生じます。競合を解決するために、コード ジェネレーターにより、各識別子名で $M トークンが 1 文字の名前マングリング テキスト (最初の関数では c、2 番目の関数では a) に展開されます。

$N を使用したサブシステム メソッド識別子の生成

[サブシステムのメソッド] コンフィギュレーション パラメーターを既定値 $R$N$M$F に戻します。

コードを生成します。生成されたコードには、モデル内のサブシステム用の次の関数が含まれています。

static void IdentifierFormatting_multiply_by_2(void);
static void IdentifierFormatting_multiply_by_4(void);

$N トークンはサブシステムごとに一意の値に展開されるため、コード ジェネレーターでは名前マングリング テキストが生成されません。

参考

トピック