予約キーワード
ジェネレーターのキーワードは内部使用のために予約されています。これらをモデル内で識別子または関数名として使用しないでください。C の予約キーワードをモデル内で識別子または関数名として使用することも避けてください。モデルに予約キーワードが含まれている場合、コード ジェネレーターはコード内に識別子を生成するときにそれらのキーワードを置き換えようとします。コード ジェネレーターが予約キーワードを置き換えることができない場合、生成コードは予約キーワードを識別子として使用し、このため生成コードがコンパイルされないことがあります。モデル内の識別子と一致しない識別子の生成を回避するため、予約キーワードを識別子として使用しないでください。
C の予約キーワード
以下に、C 言語で指定されている予約キーワードを示します。コード ジェネレーターは、以下のキーワードに一致する識別子の名前を変更しようとします。
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
C++ の予約キーワード
以下に、C の予約キーワードに加えて C++ 言語で指定されている予約キーワードを示します。C++ コードを生成する場合、コード ジェネレーターは以下のキーワードに一致する識別子の名前を変更しようとします。
bool | false | protected | try |
catch | friend | public | typeid |
class | inline | reinterpret_cast | typename |
const_cast | mutable | static_cast | using |
delete | namespace | template | virtual |
dynamic_cast | new | this | wchar_t |
explicit | operator | throw | |
export | private | true |
その他共通の予約キーワード
コード ジェネレーターは、C/C++ 言語での指定に含まれない一部のキーワードを置き換えようとします。そのようなキーワードの一部の例を以下の表に示します。
abs | int8_T | MAX_int64_T | RT |
array | int16_T | MAX_uint8_T * | RT_MALLOC |
asm | int32_T | MAX_uint16_T * | rtInf |
boolean_T | int64_T | MAX_uint32_T * | rtMinusInf |
byte_T | INTEGER_CODE | MAX_uint64_T | rtNaN |
char_T | LINK_DATA_BUFFER_SIZE | MIN_int8_T * | SeedFileBuffer |
cint8_T | LINK_DATA_STREAM | MIN_int16_T * | SeedFileBufferLen |
cint16_T | localB | MIN_int32_T * | single |
cint32_T | localC | MIN_int64_T | TID01EQ |
creal_T | localDWork | MODEL | time_T |
creal32_T | localP | MT | tm |
creal64_T | localX | NCSTATES | uint_T |
cuint8_T | localXdis | NULL | uint8_T |
cuint16_T | localXdot | NUMST | uint16_T |
cuint32_T | localZCE | pointer_T | uint32_T |
ERT | localZCSV | PROFILING_ENABLED | uint64_T |
fortran | matrix | PROFILING_NUM_SAMPLES | UNUSED_PARAMETER |
HAVESTDIO | MAX_int8_T * | real_T | USE_RTMODEL |
id_t | MAX_int16_T * | real32_T | VCAST_FLUSH_DATA |
int_T | MAX_int32_T * | real64_T | vector |
*置換識別子を指定する場合は予約されません。 |
コード生成コード置換ライブラリのキーワード
開発環境に対応したコード置換ライブラリの予約キーワードのリストは、どのライブラリが登録されているかによって異なります。使用可能なコード置換ライブラリのリストは、インストールされている他の製品 (たとえば、ターゲット製品) によって、またはカスタム コード置換ライブラリを作成し登録するために 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)のチェックを使用してモデルが予約名を使用していないことを検証できます。