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

Об этом примере

Изучение целей

Этот пример показывает вам как:

  • Сгенерируйте код для if-elseif-else логика решения как switch-case операторы.

  • Сгенерируйте код С из своего кода MATLAB® с помощью приложения MATLAB Coder™.

  • Сконфигурируйте параметры конфигурации генерации кода в проекте MATLAB Coder.

  • Сгенерируйте генерацию кода, сообщают, что можно использовать, чтобы проследить между оригинальным кодом MATLAB и сгенерированным кодом C.

Необходимые продукты

Этот пример требует следующих продуктов:

Необходимые файлы

ВводИмяОписание
Код функцииtest_code_style.mПример MATLAB, который использует if-elseif-else.

Скопируйте файл в локальную работающую папку

  1. Создайте локальную рабочую папку, например, c:\ecoder\work.

  2. Превратитесь в matlabroot\help\toolbox\ecoder\examples папка. В командной строке MATLAB введите:

    cd(fullfile(docroot, 'toolbox', 'ecoder', 'examples'))
    

  3. Скопируйте файл test_code_style.m к вашей локальной рабочей папке.

Откройте приложение MATLAB Coder

На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения MATLAB Coder.

Приложение открывает страницу Select Source Files.

Задайте исходные файлы

  1. На странице Select Source Files введите или выберите имя функции точки входа test_code_style.m.

  2. В поле Project location измените название проекта в code_style.prj.

  3. Нажмите Next, чтобы перейти к шагу Define Input Types. Приложение анализирует функцию для кодирования готовность генерации кода и проблемы. Если приложение идентифицирует проблемы, оно открывает страницу Review Code Generation Readiness, где можно рассмотреть и устранить проблемы. В этом примере, потому что приложение не обнаруживает проблемы, оно открывает страницу Define Input Types.

Определите входные типы

Поскольку C использует статический контроль типов, во время компиляции, генератор кода должен определить свойства всех переменных в файлах MATLAB. Поэтому необходимо задать свойства всех входных параметров функции. Задавать свойства входа x:

  1. Нажмите Let me enter input or global types directly.

  2. Кликните по полю справа от x.

  3. Из списка опций выберите int16. Затем выберите scalar.

  4. Нажмите Next, чтобы перейти к шагу the Check for Run-Time Issues.

Примечание

Convert if-elseif-else patterns to switch-case statements оптимизация работает только на входные параметры целочисленного и перечислимого типа.

Проверяйте на проблемы во время выполнения

Шаг Check for Run-Time Issues генерирует файл MEX от ваших функций точки входа, запускает MEX-функцию и сообщает о проблемах. Этот шаг является дополнительным. Однако это - лучшая практика выполнить этот шаг. Используя этот шаг, можно обнаружить и зафиксировать ошибки времени выполнения, которые более трудно диагностировать в сгенерированном коде C. По умолчанию MEX-функция включает проверки целостности памяти. Эти проверки выполняют границы массивов и проверку размерности. Проверки обнаруживают нарушения целостности памяти в коде, сгенерированном для функций MATLAB. Для получения дополнительной информации смотрите Проверки на этапе выполнения Управления.

  1. Чтобы открыть диалоговое окно Check for Run-Time Issues, кликните по стреле Check for Issues.

  2. В диалоговом окне Check for Run-Time Issues введите код, который вызывает test_code_style с входом в качестве примера. В данном примере введите test_code_style(int16(4)).

  3. Нажмите Check for Issues.

    Приложение генерирует MEX-функцию. Это запускает MEX-функцию с входом в качестве примера. Если приложение обнаруживает проблемы во время генерации MEX-функции или выполнения, это предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по этим сообщениям, чтобы перейти к проблематичному коду и устранить проблему. В этом примере приложение не обнаруживает проблемы.

  4. Нажмите Next, чтобы перейти к шагу Generate Code.

Сконфигурируйте параметры генерации кода

  1. Чтобы открыть диалоговое окно Generate, кликните по стреле Generate.

  2. Установите Build type на Static Library (.lib).

  3. Нажмите More settings и установите эти настройки:

    • На вкладке Code Appearance установите флажок Convert if-elseif-else patterns to switch-case statements.

    • На вкладке Debugging убедитесь, что Always create a report выбран.

    • На вкладке All Settings убедитесь, что Enable code traceability выбран.

Сгенерируйте код С

Нажмите Generate.

Когда генерация кода завершена, генератор кода производит статическую библиотеку C, test_code_style.lib, и код С в /codegen/lib/test_code_style подпапка. Генератор кода обеспечивает ссылку на отчет.

Просмотрите сгенерированный код

  1. Чтобы открыть отчет генерации кода, щелкните по ссылке View Report.

    test_code_style функция отображена в панели кода.

  2. Чтобы просмотреть код MATLAB и код С друг рядом с другом, нажмите Trace Code.

  3. В коде MATLAB установите свой курсор на оператор if (x == 1).

    Отчет прослеживает if (x == 1) к switch оператор.

Закончите рабочий процесс

Нажмите Next, чтобы открыть страницу Finish Workflow.

Страница Finish Workflow указывает на ту генерацию кода, за которой следуют. Это предоставляет сводные данные проекта и ссылки на сгенерированный выход.

Ключевые пункты, чтобы помнить

  • Чтобы проверять на проблемы во время выполнения перед генерацией кода, выполните шаг Check for Run-Time Issues.

  • К настройкам конфигурации сборки доступа, на странице Generate Code, открывают диалоговое окно Generate, и затем нажимают More Settings.

Похожие темы