Файлы Шаблона генерации кода (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 и затем восстанавливаете вашу модель, процесс генерации кода не обеспечивает сборку топ-модели. Чтобы регенерировать код, смотрите Регенерацию Силы Кода Топ-модели (Simulink Coder).
Следующая таблица обобщает встроенные лексемы и соответствующие имена раздела, и описывает секции кода.
Встроенные лексемы CGT и соответствующие секции кода
Лексема и имя раздела | Описание |
---|---|
| Направляющий раздел |
| Направляющий раздел |
| Раздел |
| Раздел перечислимых типов |
| Определения данных (например, |
| Объявления данных (например, |
| C или функции C++ |
Можно задать один или несколько именованных подразделов для любого раздела. Некоторые встроенные разделы предопределили подразделы, полученные в итоге в таблице Subsections Defined для Встроенных Разделов.
Разделы и подразделы испускают к исходному или заголовочному файлу в порядке, перечисленном в файле CGT.
Используя пользовательскую функцию раздела, можно задать дополнительные разделы. Смотрите Генерируют Пользовательский Раздел.
Подразделы, заданные для встроенных разделов
Раздел | Подразделы | Описание подраздела |
---|---|---|
| Нет данных | |
| Нет данных | |
|
| Внутренний раздел |
|
| Примитивный раздел |
|
| Можно поместить любой тип кода в этом разделе, включая код, который имеет зависимости от предыдущих разделов. |
|
| Раздел |
| Нет данных | |
| Нет данных | |
| Нет данных | |
| C или функции C++ | |
|
| Директивы |
|
| Директивы |
|
| Документация (комментарий) раздел |
|
| Можно поместить любой код в этот раздел. |