Main Content

予約キーワード

コード ジェネレーターでは、生成コードにおける特定の識別子の使用が予約されています。このような識別子には、C および C++ キーワードや C および C++ 標準ライブラリ名が含まれます。これらのキーワードを MATLAB® コードで識別子または関数名として使用すると、コード ジェネレーターによってそれらの名前が変更される場合があります。予約キーワードを名前として使用している変数または関数が生成コード内に見つからない場合は、コード ジェネレーターによってそれらの名前が変更された可能性があります。

メモ

予約キーワード以外のほとんどの変数名は生成コードで保持できます。生成されたコードでの変数名の保持を参照してください。

C の予約キーワード

_Bool_Complex_Generic_Imaginary
_Noreturn_Static_assert_Thread_localthreads
asmautoassertcase
charconstcontinuedefault
complexvoidtimetgmath
ctypeiso646stdatomicstddef
dodoubleelseenum
externfloatforgoto
ifinlineintlong
limitslocalestdboolstdio
registerrestrictreturnshort
signalwctypesetjmpstring
signedsizeofstaticstruct
single_Alignas_Alignof_Atomic
stdaligninttypesstdarguchar
stdintmatherrnowchar
stdlibstdnoreturnbreakfenv
switchtypedeftypeofunion
truefalseboolfortran
unsignedwhilevolatile 

C++ の予約キーワード

algorithmcstddefiostreamsstream
anycstdintistreamstack
arraycstdioiteratorstatic_cast
atomiccstdliblimitsstdexcept
bitsetcstringliststreambuf
cassertctgmathlocalestring_view
catchctimemapstrstream
ccomplexcucharmemorysystem_error
cctypecwcharmemory_resourcetemplate
cerrnocwctypemutablethis
cfenvdeletemutexthread
cfloatdequenamespacethrow
chronodynamic_castnewtry
cinttypesexceptionnumerictuple
ciso646executionoperatortypeid
classexplicitoptionaltype_traits
climitsexportostreamtypeindex
clocalefilesystemprivatetypeinfo
cmathforeward_listprotectedtypename
codecvtfriendpublicunordered_map
complexfstreamqueueunordered_set
condition_variablefunctionalrandomusing
const_castfutureratioutility
csetjmpinitializer_listregexvalarray
csignalinlinereinterpret_castvector
cstdaligniomanipscoped_allocatorvirtual
cstdargiossetwchar_t
cstdbooliosfwdshared_mutex 

コード生成のために予約されたキーワード

absfortranlocalZCErtNaN
asmHAVESTDIOlocalZCSVSeedFileBuffer
boolid_tmatrixSeedFileBufferLen
boolean_Tint_TMODELsingle
byte_T int8_TMTTID01EQ
char_Tint16_TNCSTATEStime_T
cint8_Tint32_TNULLtrue
cint16_Tint64_TNUMSTTRUE
cint32_TINTEGER_CODEpointer_Tuint_T
creal_TLINK_DATA_BUFFER_SIZEPROFILING_ENABLED uint8_T
creal32_TLINK_DATA_STREAMPROFILING_NUM_SAMPLESuint16_T
creal64_TlocalBreal_Tuint32_T
cuint8_TlocalCreal32_Tuint64_T
cuint16_TlocalDWorkreal64_TUNUSED_PARAMETER
cuint32_TlocalPRTUSE_RTMODEL
ERTlocalXRT_MALLOC VCAST_FLUSH_DATA
falselocalXdisrtInfvector
FALSElocalXdotrtMinusInf 

C/C++ 標準ライブラリの一部の識別子 (fprintffreadfI など) も予約されています。

これらの名前を MATLAB コードに識別子として含めると、生成コードでは、その先頭に文字が追加され、名前が変更されます。たとえば、asm の名前は b_asm に変更される場合があります。

次のコードの抜粋では、コード生成用の予約キーワードである real_T という名前の入出力変数を使用しています。

function real_T = foo(real_T)
real_T = real_T + 1;
end

生成コードでは、変数 real_T の名前は b_real_T に変更されます。

void foo(double *b_real_T)
{
  (*b_real_T)++;
}

予約された接頭辞

MATLAB Coder™ では、接頭辞 eml がグローバルな C/C++ 関数と生成コード内の変数用に予約されています。たとえば、MATLAB のコード生成用ランタイム ライブラリの関数名は接頭辞 emlrt から始まります (emlrtCallMATLAB など)。名前の競合を避けるために、C/C++ 関数または主要な MATLAB 関数の名前には接頭辞 eml を付けないでください。

MATLAB Coder コード置換ライブラリのキーワード

開発環境に対応したコード置換ライブラリ (CRL) の予約キーワードのリストは、どの CRL が現在登録されているかによって異なります。MATLAB Coder ソフトウェアで提供されている既定の ANSI®、ISO® および GNU® の各 CRL だけでなく、CRL を提供するその他の製品 (ターゲット製品など) をインストールしているか、Embedded Coder® API を使用してカスタムの CRL を作成および登録したことがある場合は、追加の CRL を登録して使用することができます。

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

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

この関数は、CRL キーワードを含む文字ベクトルの cell 配列を返します。戻り引数の指定はオプションです。

メモ

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

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

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU99 (GNU)')

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

>> crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU99 (GNU)')

crl_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' になります。念のため、両方の形式のキーワードを予約済みとして処理してください。

関連するトピック