Имя типа структуры C в сгенерированном коде
coder.cstructname называет сгенерированный или внешне заданный тип структуры C, чтобы использовать для переменных MATLAB®, которые представлены как структуры в сгенерированном коде.
coder.cstructname( называет тип структуры C сгенерированным для переменной MATLAB var,structName)var. Вход var может быть структура или массив ячеек. Используйте этот синтаксис в функции, от которой вы генерируете код. Место coder.cstructname после определения var и перед первым использованием var. Если var точка входа (верхний уровень) входной аргумент функции, место coder.cstructname в начале функции, перед любыми операторами управления.
coder.cstructname( указывает, что структура C вводит, чтобы использовать для var,structName,'extern','HeaderFile',headerfile)var имеет имя structName и задан во внешнем файле, headerfileName.
Возможно использовать 'extern' опция, не задавая заголовочный файл. Однако это - лучшая практика задать заголовочный файл так, чтобы генератор кода произвел #include оператор в правильном месте.
coder.cstructname( также указывает, что выравнивание памяти во время выполнения для внешне заданной структуры вводит var,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)structName. Если вы имеете Embedded Coder® и пользуетесь Заменяющими Библиотеками пользовательского кода (CRLs), задаете выравнивание так, чтобы генератор кода мог совпадать с функциями CRL, которые требуют выравнивания для структур. Смотрите Выравнивание Данных для Замены Кода (Embedded Coder).
возвращает массив структур или текстовый объект массива ячеек outtype =
coder.cstructname(intype,structName)outtype это задает имя типа структуры C, чтобы сгенерировать. coder.cstructname создает outtype со свойствами входа вводят intype. Затем это устанавливает TypeName свойство к structName. Используйте этот синтаксис, чтобы создать текстовый объект, который вы используете с codegen
-args опция. Вы не можете использовать этот синтаксис в функции, от которой вы генерируете код.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
возвращает текстовый объект outtype =
coder.cstructname(intype,structName,'extern','HeaderFile',headerfile)outtype это задает название и местоположение внешне заданного типа структуры C. Генератор кода использует внешне заданный тип структуры для переменных с типом outtype.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
создает текстовый объект outtype =
coder.cstructname(intype,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)outtype это также задает выравнивание типа структуры C.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
Вы не можете применяться coder.cstructname непосредственно к глобальной переменной. Чтобы назвать тип структуры, чтобы использовать с глобальной переменной, использовать coder.cstructname создать текстовый объект, который называет тип структуры. Затем когда вы запускаетесь codegen, укажите, что глобальная переменная имеет тот тип. Смотрите Имя Тип Структуры C, чтобы Использовать С Глобальной Переменной Структуры (MATLAB Coder).
Для входных параметров массива ячеек именами полей внешне заданных структур должен быть f1, f2, и так далее.
Вы не можете применяться coder.cstructname непосредственно к свойству класса.
Для получения информации о том, как генератор кода определяет типы C/C++ полей структуры, смотрите Отображение Типы MATLAB к Типам в Сгенерированном коде (MATLAB Coder).
Используя coder.cstructname на массиве структур определяет имя типа структуры основного элемента, не имя массива. Поэтому вы не можете применяться coder.cstructname к элементу массива структур, и затем применяют его к массиву с различным именем типа структуры C. Например, следующий код не позволен. Второе coder.cstructname попытки определить имя базового типа к myStructArrayName, который конфликтует с ранее заданным именем, myStructName.
% Define scalar structure with field a myStruct = struct('a', 0); coder.cstructname(myStruct,'myStructName'); % Define array of structure with field a myStructArray = repmat(myStruct,4,6); coder.cstructname(myStructArray,'myStructArrayName');
Применение coder.cstructname к элементу массива структур приводит к тому же результату как применение coder.cstructname к целому массиву структур. Если вы применяетесь coder.cstructname к элементу массива структур необходимо обратиться к элементу при помощи одного индекса. Например, можно использовать var(1), но не var(1,1). Применение coder.cstructname к var(:) приводит к тому же результату как применение coder.cstructname к var или var(n).
Неоднородные массивы ячеек представлены как структуры в сгенерированном коде. Вот факторы для использования coder.cstructname с массивами ячеек:
В функции, от которой вы генерируете код, с помощью coder.cstructname с массивом ячеек переменная делает массив ячеек неоднородным. Поэтому, если массив ячеек является входным параметром функции точки входа, и его тип является постоянно гомогенным, то вы не можете использовать coder.cstructname с массивом ячеек.
Используя coder.cstructname с гомогенным coder.CellType объект intype делает возвращенный объект неоднородным. Поэтому вы не можете использовать coder.cstructname с постоянно гомогенным coder.CellType объект. Для получения информации о том, когда массив ячеек является постоянно гомогенным, смотрите, Задают Входные параметры Массива ячеек в Командной строке (MATLAB Coder).
Когда используется с coder.CellType объект, coder.cstructname создает coder.CellType объект, который постоянно неоднороден.
Когда вы используете структуру, названную coder.cstructname в проекте с упорядоченными по строкам и упорядоченными по столбцам размещениями массивов генератор кода переименовывает структуру в определенных случаях, добавляя row_ или col_ к началу имени структуры. Это переименование предоставляет уникальные определения типа для типов, которые используются в обоих размещениях массивов.
Эти советы применяются только к блокам MATLAB Function:
Структуры ввода и вывода блока MATLAB Function сопоставлены с сигналами шины. Сгенерированное название для типа структуры происходит от имени сигнала шины. Не использовать coder.cstructname назвать тип структуры для сигналов ввода или вывода. Смотрите Создают Структуры в блоках MATLAB function.
Генератор кода производит имена типов структуры согласно правилам именования идентификатора, даже если вы называете тип структуры с coder.cstructname. Если у вас есть Embedded Coder, можно настроить правила именования. Смотрите Конструкцию Сгенерированных Идентификаторов (Embedded Coder).