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

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

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

  • Действительные лексемы, перечисленные в лексемах идентификатора. Вы можете использовать или опускать лексемы в зависимости от того, что вы хотите включить в имя идентификатора. Параметр Shared utilities identifier format требует, чтобы вы указали лексему контрольной суммы, $C. Другие параметры требуют искривления лексемы, $M. Для получения дополнительной информации см. раздел «Управление именем» в разделе «Сгенерированные идентификаторы». Лексема управления подвержена ограничениям использования и упорядоченного расположения, отмеченным в Значениях параметров управления формата идентификатора.

  • Декораторы токенов, которые перечислены в Control Case with Token Decorators. Можно использовать декораторы токенов, чтобы управлять случаем сгенерированных идентификаторов для каждой лексемы.

  • Действительные символы идентификатора языка C или C++ (a-z, A-Z, _ , 0-9).

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

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

ЛексемаОписание
$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 Parameter Values перечисляет значение макроса по умолчанию, поддерживаемые лексемы и применимые ограничения для каждого параметра 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 не разрешены.

Цели, не основанные на ERT (такие как цель 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 и a DWork структура, представленная DW, результатом является ModelName_Dw.

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

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

model='rtwdemo_symbols';
open_system(model)

% Cleanup
rtwdemoclean;
close_system(model,0)