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

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

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

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

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

Примечание

Чтобы перечислить CRLs, в настоящее время указанный в вашей среде, используйте команду 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' если неличные числа не поддерживаются. Предусмотрительно, необходимо обработать обе формы ключевого слова, как зарезервировано.

Похожие темы