Управление форматом идентификатора

Можно настроить сгенерированные идентификаторы путем определения параметров Identifier format control на панели Code Generation > Identifiers в диалоговом окне Configuration Parameters. Для каждого параметра можно ввести макрос, который задает, ли, и в том, какой порядок, определенный текст включен в сгенерированных идентификаторах. Например, можно указать, что корневое имя модели вставляется в каждый идентификатор с помощью $R лексема.

Макрос может включать:

Процесс сборки генерирует каждый идентификатор путем расширения лексем и вставки результирующего текста в идентификатор. Лексемы расширены в порядке, перечисленном в Лексемах Формата Идентификатора. Группы символов вставляются в положения, которые вы задаете вокруг лексем непосредственно в идентификатор. Непрерывные маркерные расширения разделяются подчеркиванием (_Символ.

Лексемы формата идентификатора

ЛексемаОписание
$C

Эта лексема требуется для Shared utilities identifier format. Если идентификатор превышает Maximum identifier length, генератор кода вставляет контрольную сумму с 8 символами, чтобы не называть столкновения. Положение $C лексема в спецификации параметра Identifier format control определяет положение контрольной суммы в сгенерированном идентификаторе. Например, если вы используете спецификацию $N$C, контрольная сумма добавлена в конец идентификатора. Эта лексема доступна только для разделяемых утилит.

$M

Эта лексема требуется. При необходимости генератор кода вставляет искажающий имя текст, чтобы не называть столкновения. Измените длину знака контрольной суммы при помощи параметра Shared checksum length. Положение $M лексема в спецификации параметра Identifier format control определяет положение искажающего имя текста в сгенерированном идентификаторе. Например, если вы используете спецификацию $R$N$M, искажающий имя текст добавлен (при необходимости) в конец идентификатора. Для получения дополнительной информации смотрите, что Имя элемента управления Искажает в Сгенерированных Идентификаторах.

$U

Вставьте текст, который вы задаете для $U лексема. Используйте параметр Custom token text, чтобы задать этот текст.

$F

Вставьте имя метода (например, _Update для метода обновления). Эта лексема доступна только для методов подсистемы.

$N

Вставьте имя объекта (блок, объект сигнала или сигнала, состояние, параметр, совместно использовало служебную функцию или объект параметра), для которого генерируется идентификатор.

$R

Вставьте корневое имя модели в идентификатор, заменив неподдерживаемые символы на подчеркивание (_Символ. Когда вы используете модели, на которые ссылаются, эта лексема требуется в дополнение к $M (см., избегают столкновений имени идентификатора с моделями, на которые ссылаются).

Примечание: Эта лексема заменяет опцию Prefix model name to global identifiers в предыдущих релизах.

$H

Вставьте тег, указывающий на уровень системной иерархии. Для блоков корневого уровня тег является текстом root_. Для блоков на уровне подсистемы тег имеет форму sN_N уникальный номер системы, присвоенный программным обеспечением Simulink®. Эта лексема доступна только для методов подсистемы и имен полей глобальных типов.

Примечание: Эта лексема заменяет опцию Include System Hierarchy Number in Identifiers в предыдущих релизах.

$A

Вставьте акроним типа данных (например, i32 для целых чисел), чтобы сигнализировать и работать векторные идентификаторы. Эта лексема доступна для локальных выходных переменных блока, локальных временных переменных и имен полей глобальных типов.

Примечание: Эта лексема заменяет опцию Include data type acronym in identifier в предыдущих релизах.

$I
  • Вставьте u если аргумент является входом.

  • Вставьте y если аргументом является выход.

  • Вставьте uy если аргумент является вводом и выводом.

Например, rtu_ для входного параметра, rty_ для выходного аргумента и rtuy_ для аргумента ввода и вывода. Эта лексема доступна только для аргументов метода подсистемы.

$G

Вставьте имя класса памяти, который сопоставлен с элементом данных. Эта лексема также доступна в правиле именования, что вы задаете для Header File для класса памяти в Словаре Embedded Coder®.

$E

Вставьте тип файла. $E представляет эти экземпляры типов файлов:

  • capi

  • capi_host

  • dt

  • testinterface

  • private

  • types

Эта лексема требуется для Header files и Source files.

Значения параметров Управления форматом идентификатора перечисляют макро-значение по умолчанию, поддерживаемые лексемы и применимые ограничения для каждого параметра Identifier format control.

Значения параметров управления форматом идентификатора

ПараметрЗначение по умолчаниюПоддерживаемые лексемыОграничения
Global variables$R$N$M$M, $R, $G, $N, $U$F, $H, $A, $E, и $I не позволены.
Global types$N$R$M_T$M, $R, $G, $N, $U$F, $H, $A, $E, и $I не позволены.
Field name of global types$N$M$M, $N, $H, $A, $U$R, $F, $G, $E, и $I не позволены.
Subsystem methods$R$N$M$F$M, $R, $N, $H, $F, $U$F и $H пусты для функций Stateflow®; $A, $G, $E, и $I не позволены.
Subsystem method argumentsrt$I$N$M $M, $N, $I, $U$R, $F, $H, $G, $E, и $A не позволены.
Local temporary variables$N$M$M, $R, $N, $A, $U$F, $H, $G, $E, и $I не позволены.
Local block output variablesrtb_$N$M$M, $N, $A, $U$R, $F, $H, $G, $E, и $I не позволены.
Constant macros$R$N$M$M, $R, $N, $U$F, $H, $A, $G, $E, и $I не позволены.
Shared utilities identifier format$N$C$N, $C, $R, $U$C требуется. $M, $F, $H, $A, $G, $E, и $I не позволены.
EMX array utility functions identifier format
emx$M$N$M, $N, $R$C, $U, $F, $H, $A, $G, $E, и $I не позволены.
EMX array types identifier format
emxArray_$M$N$M, $N, $R $C, $U, $F, $H, $A, $G, $E, и $I не позволены.
Header files$R$E$R, $U, $E $C, $M, $N, $F, $H, $A, $G, и $I не позволены.
Source files$R$E$R, $U, $E $C, $M, $N, $F, $H, $A, $G, и $I не позволены.
Data files$R_data$R, $U $C, $M, $N, $F, $H, $A, $G, $E, и $I не позволены.

Цели Non-ERT-based (такие как цель GRT) неявно используют $R$N$M по умолчанию спецификация. Эта спецификация по умолчанию состоит из корневого имени модели, сопровождаемого под названием генерирующийся объект (сигнал, параметр, состояние, и так далее), сопровождаемый искажающим имя текстом.

Для ограничений, которые применяются к параметрам Identifier format control, смотрите Исключения к Соглашениям Форматирования Идентификатора и Ограничения Параметров Управления форматом Идентификатора.

Управляйте случаем с маркерными декораторами

На Code Generation> панель Identifiers, можно использовать маркерных декораторов, чтобы управлять случаем сгенерированных идентификаторов. Разместите декоратора сразу после целевой лексемы и заключите декоратора в квадратные скобки [ ]. Например, можно установить Global variables на $R[uL]$N$M, который использует для своей выгоды первую букву от имени модели и обеспечивает оставшиеся символы в имени модели к нижнему регистру.

Таблица показывает, как управлять расширением $R лексема для модели, именем которой является modelName.

Желаемое расширениеОписаниеЛексема и декоратор
ModelNameПервая буква от имени модели является прописной. Оставшиеся символы не изменяются.$R[u]
ModelnameПервая буква от имени модели является прописной. Оставшиеся символы являются нижним регистром.$R[uL]
MODELNAMEВсе символы являются прописными.$R[U]
modelnameВсе символы являются нижним регистром.$R[L]
mODELNAMEПервая буква от имени модели является нижним регистром. Оставшиеся символы являются прописными.$R[lU]
modelNameПервая буква от имени модели является нижним регистром. Оставшиеся символы не изменяются.$R[l]

Когда вы используете декоратора, генератор кода удаляет символ подчеркивания (_) это появляется между лексемами по умолчанию. Однако можно добавить каждого декоратора с подчеркиванием: $R[U_]$N. Например, если вы устанавливаете параметр Global variables на $R[u_]$N[uL]$M для модели под названием modelName и DWork структура представлена DW, результатом является ModelName_Dw.

Управляйте форматированием идентификаторов

В этом примере показано, как можно настроить сгенерированные идентификаторы путем определения параметров управления форматом Идентификатора на Генерации кода> панель Идентификаторов в диалоговом окне Configuration Parameters. Чтобы обеспечить трассируемость модели, важно, чтобы инкрементные версии модели оказали минимальное влияние на имена идентификатора, которые появляются в сгенерированном коде. В этом примере показано, как можно использовать искажение имени путем определения параметров управления форматом Идентификатора, чтобы минимально повлиять на имена идентификатора.

model='rtwdemo_symbols';
open_system(model)

% Cleanup
rtwdemoclean;
close_system(model,0)