Main Content

予約キーワード

ジェネレーターのキーワードは内部使用のために予約されています。これらをモデル内で識別子または関数名として使用しないでください。C の予約キーワードをモデル内で識別子または関数名として使用することも避けてください。モデルに予約キーワードが含まれている場合、コード ジェネレーターはコード内に識別子を生成するときにそれらのキーワードを置き換えようとします。コード ジェネレーターが予約キーワードを置き換えることができない場合、生成コードは予約キーワードを識別子として使用し、このため生成コードがコンパイルされないことがあります。モデル内の識別子と一致しない識別子の生成を回避するため、予約キーワードを識別子として使用しないでください。

C の予約キーワード

以下に、C 言語で指定されている予約キーワードを示します。コード ジェネレーターは、以下のキーワードに一致する識別子の名前を変更しようとします。

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsigned
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile

C++ の予約キーワード

以下に、C の予約キーワードに加えて C++ 言語で指定されている予約キーワードを示します。C++ コードを生成する場合、コード ジェネレーターは以下のキーワードに一致する識別子の名前を変更しようとします。

boolfalseprotectedtry
catchfriendpublictypeid
classinlinereinterpret_casttypename
const_castmutablestatic_castusing
deletenamespacetemplatevirtual
dynamic_castnewthiswchar_t
explicitoperatorthrow 
exportprivatetrue 

その他共通の予約キーワード

コード ジェネレーターは、C/C++ 言語での指定に含まれない一部のキーワードを置き換えようとします。そのようなキーワードの一部の例を以下の表に示します。

absint8_TMAX_int64_TRT
arrayint16_TMAX_uint8_T*RT_MALLOC
asmint32_TMAX_uint16_T*rtInf
boolean_Tint64_TMAX_uint32_T*rtMinusInf
byte_TINTEGER_CODEMAX_uint64_TrtNaN
char_TLINK_DATA_BUFFER_SIZEMIN_int8_T*SeedFileBuffer
cint8_TLINK_DATA_STREAMMIN_int16_T*SeedFileBufferLen
cint16_TlocalBMIN_int32_T*single
cint32_TlocalCMIN_int64_TTID01EQ
creal_TlocalDWorkMODELtime_T
creal32_TlocalPMTtm
creal64_TlocalXNCSTATESuint_T
cuint8_TlocalXdisNULLuint8_T
cuint16_TlocalXdotNUMSTuint16_T
cuint32_TlocalZCEpointer_Tuint32_T
ERTlocalZCSVPROFILING_ENABLED uint64_T
fortranmatrixPROFILING_NUM_SAMPLESUNUSED_PARAMETER
HAVESTDIOMAX_int8_T*real_TUSE_RTMODEL
id_tMAX_int16_T*real32_TVCAST_FLUSH_DATA
int_TMAX_int32_T*real64_Tvector
*置換識別子を指定する場合は予約されません。

コード生成コード置換ライブラリのキーワード

開発環境に対応したコード置換ライブラリの予約キーワードのリストは、どのライブラリが登録されているかによって異なります。使用可能なコード置換ライブラリのリストは、インストールされている他の製品 (たとえば、ターゲット製品) によって、またはカスタム コード置換ライブラリを作成し登録するために Embedded Coder® を使用したかによって異なります。

お使いの環境に現在登録されているライブラリに対応した予約キーワードのリストを生成するには、次の MATLAB® 関数を使用します。

lib_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

この関数は、ライブラリのキーワードの配列を返します。入力引数の指定はオプションです。

メモ

お使いの環境で現在登録されているライブラリをリストするには、MATLAB コマンド crviewer を使用します。

コード生成に使用する特定のライブラリについて、予約されているキーワードのリストを生成するには、この関数を呼び出し、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインにある [コード置換ライブラリ] メニューに表示されるライブラリの名前を渡します。次に例を示します。

lib_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU C99 extensions')

関数出力の一部の例を次に示します。

>> lib_ids = ...
   RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU C99 extensions')

lib_ids = 

    'exp10'
    'exp10f'
    'acosf'
    'acoshf'
    'asinf'
    'asinhf'
    'atanf'
    'atanhf'
...
    'rt_lu_cplx'
    'rt_lu_cplx_sgl'
    'rt_lu_real'
    'rt_lu_real_sgl'
    'rt_mod_boolean'
    'rt_rem_boolean'
    'strcpy'
    'utAssert'

メモ

返されるキーワードの中には、'rt_atan2$N' のように接尾辞 $N とともに表示されるものがあります。$N は、非有限数がサポートされている場合にのみ接尾辞 _snf に展開されます。たとえば、'rt_atan2$N' は、非有限数がサポートされている場合は 'rt_atan2_snf' になり、非有限数がサポートされていない場合は 'rt_atan2' になります。念のため、両方の形式のキーワードを予約済みとして処理してください。

カスタム予約キーワードの指定

コード ジェネレーターが予約するキーワードに加え、一連のカスタム予約キーワードを指定できます。カスタム予約キーワードを指定することで、外部環境からの関数と変数が Simulink® モデルで認識されない場合のコード統合を促進できます。

予約名の一覧を作成するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[コード生成]、[識別子] ペインで、予約名フィールドにキーワードを入力します。

モデルに MATLAB Function ブロックまたは Stateflow® ブロックが含まれている場合、[コード生成]、[識別子] ペインで [シミュレーション ターゲットと同じ予約名を使用] を選択すると、コード生成プロセスでこれらのブロックに指定されている予約名が使用されます。

プログラムによる予約キーワードのチェック

予約キーワードのリストは大規模で動的であるため、ドキュメンテーションではすべてを示すことはできません。コード ジェネレーターが置換しようとするキーワードのリストをプログラムで取得するには、MATLAB コマンド ウィンドウから次のコマンドを実行します。

RTW.reservedIdentifiers()
このコマンドは、予約識別子のリストを含む構造体を返します。戻り値の詳細については、RTW.reservedIdentifiersを参照してください。

Simulink Check™ ライセンスをお持ちの場合は、Check model object names (Simulink Check)のチェックを使用してモデルが予約名を使用していないことを検証できます。

参考