予約キーワード
コード ジェネレーターでは、生成コードにおける特定の識別子の使用が予約されています。このような識別子には、C および C++ キーワードや C および C++ 標準ライブラリ名が含まれます。これらのキーワードを MATLAB® コードで識別子または関数名として使用すると、コード ジェネレーターによってそれらの名前が変更される場合があります。予約キーワードを名前として使用している変数または関数が生成コード内に見つからない場合は、コード ジェネレーターによってそれらの名前が変更された可能性があります。
メモ
予約キーワード以外のほとんどの変数名は生成コードで保持できます。生成されたコードでの変数名の保持を参照してください。
C の予約キーワード
_Bool | _Complex | _Generic | _Imaginary |
_Noreturn | _Static_assert | _Thread_local | threads |
asm | auto | assert | case |
char | const | continue | default |
complex | void | time | tgmath |
ctype | iso646 | stdatomic | stddef |
do | double | else | enum |
extern | float | for | goto |
if | inline | int | long |
limits | locale | stdbool | stdio |
register | restrict | return | short |
signal | wctype | setjmp | string |
signed | sizeof | static | struct |
single | _Alignas | _Alignof | _Atomic |
stdalign | inttypes | stdarg | uchar |
stdint | math | errno | wchar |
stdlib | stdnoreturn | break | fenv |
switch | typedef | typeof | union |
true | false | bool | fortran |
unsigned | while | volatile |
C++ の予約キーワード
algorithm | cstddef | iostream | sstream |
any | cstdint | istream | stack |
array | cstdio | iterator | static_cast |
atomic | cstdlib | limits | stdexcept |
bitset | cstring | list | streambuf |
cassert | ctgmath | locale | string_view |
catch | ctime | map | strstream |
ccomplex | cuchar | memory | system_error |
cctype | cwchar | memory_resource | template |
cerrno | cwctype | mutable | this |
cfenv | delete | mutex | thread |
cfloat | deque | namespace | throw |
chrono | dynamic_cast | new | try |
cinttypes | exception | numeric | tuple |
ciso646 | execution | operator | typeid |
class | explicit | optional | type_traits |
climits | export | ostream | typeindex |
clocale | filesystem | private | typeinfo |
cmath | foreward_list | protected | typename |
codecvt | friend | public | unordered_map |
complex | fstream | queue | unordered_set |
condition_variable | functional | random | using |
const_cast | future | ratio | utility |
csetjmp | initializer_list | regex | valarray |
csignal | inline | reinterpret_cast | vector |
cstdalign | iomanip | scoped_allocator | virtual |
cstdarg | ios | set | wchar_t |
cstdbool | iosfwd | shared_mutex |
コード生成のために予約されたキーワード
abs | fortran | localZCE | rtNaN |
asm | HAVESTDIO | localZCSV | SeedFileBuffer |
bool | id_t | matrix | SeedFileBufferLen |
boolean_T | int_T | MODEL | single |
byte_T | int8_T | MT | TID01EQ |
char_T | int16_T | NCSTATES | time_T |
cint8_T | int32_T | NULL | true |
cint16_T | int64_T | NUMST | TRUE |
cint32_T | INTEGER_CODE | pointer_T | uint_T |
creal_T | LINK_DATA_BUFFER_SIZE | PROFILING_ENABLED | uint8_T |
creal32_T | LINK_DATA_STREAM | PROFILING_NUM_SAMPLES | uint16_T |
creal64_T | localB | real_T | uint32_T |
cuint8_T | localC | real32_T | uint64_T |
cuint16_T | localDWork | real64_T | UNUSED_PARAMETER |
cuint32_T | localP | RT | USE_RTMODEL |
ERT | localX | RT_MALLOC | VCAST_FLUSH_DATA |
false | localXdis | rtInf | vector |
FALSE | localXdot | rtMinusInf |
C/C++ 標準ライブラリの一部の識別子 (fprintf、freadf、I など) も予約されています。
これらの名前を 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' になります。念のため、両方の形式のキーワードを予約済みとして処理してください。
予約キーワードのリストのプログラムによる取得
予約キーワードのリストは大きくて動的であるため、ドキュメンテーションではそのすべてを表示できません。コード ジェネレーターが置換しようとするキーワードのリストをプログラムで取得するには、MATLAB コマンド ウィンドウから次のコマンドを実行します。
RTW.reservedIdentifiers()
RTW.reservedIdentifiers を参照してください。