予約キーワード
コード ジェネレーターでは、生成コードにおける特定の識別子の使用が予約されています。このような識別子には、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
を参照してください。