exponenta event banner

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

Генератор кода резервирует использование определенных идентификаторов в сгенерированном коде. Эти идентификаторы включают ключевые слова 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

Список зарезервированных ключевых слов библиотеки замены кода (CRL) для среды разработки зависит от того, какие CRL в настоящее время зарегистрированы. Помимо стандартных списков CRL ANSI ®, ISO ® и GNU ®, поставляемых с программным обеспечением MATLAB Coder, дополнительные списки CRL могут быть зарегистрированы и доступны для использования, если установлены другие продукты, предоставляющие CRL (например, целевой продукт), или если вы использовали API Embedded Coder ® для создания и регистрации пользовательских списков CRL.

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

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

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

Примечание

Для вывода списка CRL, зарегистрированных в настоящее время в среде, используйте команду MATLAB. crviewer.

Чтобы создать список зарезервированных ключевых слов для CRL, который используется для создания кода, вызовите функцию, передающую имя CRL, как показано в меню Библиотека замены кода (Code replacement library) на панели Создание кода (Code Generation) > Интерфейс (Interface) диалогового окна Параметры конфигурации (Configuration Parameters). Например,

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' если не поддерживаются конечные номера. В качестве меры предосторожности следует рассматривать обе формы ключевого слова как зарезервированные.

Связанные темы