Файлы шаблонов генерации кода (CGT) определяют организацию верхнего уровня и форматирование созданных файлов исходного кода и заголовков. Файлы CGT имеют следующие приложения:
Создание пользовательских баннеров (разделов комментариев) в файлах кода. См. раздел Создание пользовательских баннеров файлов и функций.
Для создания пользовательского кода с использованием шаблона CFP требуется файл CGT. Для использования шаблонов CFP необходимо понимать структуру файлов CGT. Однако во многих случаях можно использовать файл CGT по умолчанию без его изменения.
Программное обеспечение генерации кода предоставляет файл CGT по умолчанию, . Создайте пользовательские файлы CGT на основе файла по умолчанию.matlabroot/toolbox/rtw/targets/ecoder/ert_code_template.cgt
Файл CGT состоит из одного обязательного раздела и четырех дополнительных разделов:
(Обязательно) Этот раздел содержит маркеры, определяющие упорядоченное разбиение сгенерированного кода на несколько разделов (например, Includes и Defines разделы). Маркеры имеют вид:
%<SectionName>
Например,
%<Includes>
Программное обеспечение генерации кода определяет минимальный набор требуемых маркеров. Эти маркеры генерируют код источника или заголовка C или C++. Они являются встроенными маркерами (см. Встроенные маркеры и разделы). Можно также определить пользовательские маркеры и пользовательские разделы.
Каждый маркер функционирует как местозаполнитель для соответствующего раздела сгенерированного кода. Порядок маркеров определяет порядок, в котором соответствующие разделы появляются в сгенерированном коде. Если маркер не включен, соответствующий раздел не создается. Чтобы создать код в данном разделе, явно вызовите API шаблона кода из шаблона CFP, как описано в разделе Шаблоны пользовательской обработки файлов (CFP).
Маркеры CGT определяют высокоуровневую организацию сгенерированного кода. Используя API шаблона кода, можно разбить каждый раздел кода на именованные подразделы, как описано в подразделах.
В разделе вставки кода можно также вставить комментарии C или C++ между маркерами. Такие комментарии поступают непосредственно в сгенерированный код.
(Необязательно) В этом разделе содержатся комментарии и маркеры, используемые при создании пользовательского баннера файлов.
(Необязательно) В этом разделе содержатся комментарии и маркеры для использования при создании баннера пользовательской функции.
(Необязательно) В этом разделе содержатся комментарии и маркеры для использования при создании баннера настраиваемой общей функции утилиты.
(Необязательно) В этом разделе содержатся комментарии для использования при создании пользовательского баннера трейлера.
Дополнительные сведения об этих разделах см. в разделе Создание пользовательских баннеров файлов и функций.
В следующем извлечении кода показан необходимый раздел вставки кода файла CGT по умолчанию с необходимыми встроенными маркерами.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Code insertion section (required) %% These are required tokens. You can insert comments and other tokens in %% between them, but do not change their order or remove them. %% %<Includes> %<Defines> %<Types> %<Enums> %<Definitions> %<Declarations> %<Functions>
Обратите внимание на следующие требования к настройке файла CGT:
Не удаляйте необходимые встроенные маркеры.
Встроенные маркеры должны отображаться в указанном порядке, поскольку каждый последующий раздел зависит от предыдущих разделов.
Только один маркер на строку.
Не повторяйте маркеры.
В раздел вставки кода можно добавлять пользовательские маркеры и комментарии, если не нарушаются прежние требования.
Примечание
Если изменить CGT-файл, а затем перестроить модель, процесс создания кода не принудит построение модели верхнего уровня. Сведения о регенерации кода см. в разделе Принудительная регенерация кода верхней модели.
В следующей таблице обобщаются встроенные маркеры и имена соответствующих разделов, а также описываются разделы кода.
Встроенные маркеры CGT и соответствующие разделы кода
Имя маркера и раздела | Описание |
|---|---|
|
|
|
|
|
|
| Раздел перечисляемых типов |
| Определения данных (например, |
| Объявления данных (например, |
| Функции C или C++ |
Можно определить одно или несколько именованных подразделов для любого раздела. Некоторые из встроенных разделов имеют предопределенные подразделы, обобщенные в таблице Подразделы определены для встроенных разделов.
Примечание
Разделы и подразделы отправляются в исходный или заголовочный файл в порядке, указанном в файле CGT.
С помощью пользовательского элемента сечения можно определить дополнительные сечения. См. раздел Создание пользовательского сечения.
Подразделы, определенные для встроенных разделов
Раздел | Подразделы | Описание подраздела |
|---|---|---|
| Н/Д | |
| Н/Д | |
|
| Внутренний |
|
| Примитивный |
|
| В этот раздел можно поместить любой тип кода, включая код, зависящий от предыдущих разделов. |
|
|
|
| Н/Д | |
| Н/Д | |
| Н/Д | |
| Функции C или C++ | |
|
|
|
|
|
|
|
| Раздел документации (замечания) |
|
| В этом разделе можно разместить любой код. |