Имя типа структуры 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, чтобы Использовать С Глобальной Переменной Структуры.
Для входных параметров массива ячеек именами полей внешне заданных структур должен быть f1
, f2
, и так далее.
Для получения информации о том, как генератор кода определяет типы C/C++ полей структуры, смотрите Отображение Типы MATLAB к Типам в Сгенерированном коде.
Используя 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
объект. Для получения информации о том, когда массив ячеек является постоянно гомогенным, смотрите, Задают Входные параметры Массива ячеек в Командной строке.
Когда используется с coder.CellType
объект, coder.cstructname
создает coder.CellType
объект, который постоянно неоднороден.
Когда вы используете структуру, названную coder.cstructname
в проекте с упорядоченными по строкам и упорядоченными по столбцам размещениями массивов генератор кода переименовывает структуру в определенных случаях, добавляя row_
или col_
к началу имени структуры. Это переименование предоставляет уникальные определения типа для типов, которые используются в обоих размещениях массивов.
Эти советы применяются только к блокам MATLAB Function:
Структуры ввода и вывода блока MATLAB Function сопоставлены с сигналами шины. Сгенерированное название для типа структуры происходит от имени сигнала шины. Не используйте coder.cstructname
назвать тип структуры для сигналов ввода или вывода. Смотрите Создают Структуры в блоках MATLAB function (Simulink).
Генератор кода производит имена типов структуры согласно правилам именования идентификатора, даже если вы называете тип структуры с coder.cstructname
. Если у вас есть Embedded Coder, можно настроить правила именования. Смотрите Конструкцию Сгенерированных Идентификаторов (Embedded Coder).