Зарезервированные ключевые слова

Генератор кода резервирует использование определенных идентификаторов в сгенерированном коде. Эти идентификаторы включают ключевые слова 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 + +, таких как 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 зарегистрированы в настоящее время. За пределами ANSI по умолчанию®, ISO®, и GNU® CRL, поставляемые с программным обеспечением MATLAB Coder, дополнительные CRL могут быть зарегистрированы и доступны для использования, если вы установили другие продукты, предоставляющие CRL (для примера, целевого продукта), или если вы использовали Embedded Coder® API для создания и регистрации пользовательских CRL.

Чтобы сгенерировать список зарезервированных ключевых слов для CRL, зарегистрированных в настоящее время в вашем окружении, используйте следующую функцию MATLAB:

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

Эта функция возвращает массив ячеек из векторов символов, которые содержат ключевые слова CRL. Установка возвращаемого аргумента опциональна.

Примечание

Чтобы перечислить CRL, зарегистрированные в настоящее время в вашем окружении, используйте команду MATLAB crviewer.

Чтобы сгенерировать список зарезервированных ключевых слов для CRL, которые вы используете для генерации кода, вызовите функцию, передающую имя CRL, как показано в меню Code replacement library на панели Code Generation > Interface диалогового окна Параметры конфигурации. Для примера,

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'

Примечание

Некоторые возвращенные ключевые слова появляются с суффиксом $N, для примера, 'rt_atan2$N'. $N расширяется в суффикс _snf только в том случае, если поддерживаются нефинитные числа. Для примера, 'rt_atan2$N' представляет 'rt_atan2_snf' если поддерживаются и 'rt_atan2' нефинитные числа если нефинитные числа не поддерживаются. В качестве меры предосторожности следует рассматривать обе формы ключевого слова как зарезервированные.

Похожие темы