Назовите тип структуры C в сгенерированном коде
coder.cstructname
называет сгенерированный или внешне определенный тип структуры C, используемый для MATLAB® переменные, которые представлены как структуры в сгенерированном коде.
coder.cstructname(
называет тип структуры C, сгенерированный для переменного MATLAB var
,structName
)var
. Область входа var
может быть структурой или массивом ячеек. Используйте этот синтаксис в функции, из которой вы генерируете код. Место coder.cstructname
после определения var
и перед первым использованием var
. Если var
является входным аргументом функции точки входа (верхнего уровня), place 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® и используйте пользовательские библиотеки замены кода (CRL), задайте выравнивание, чтобы генератор кода мог соответствовать функциям CRL, которые требуют выравнивания для структур. См. «Выравнивание данных для замены кода» (Embedded Coder).
возвращает структуру или объект типа массива ячеек outtype
=
coder.cstructname(intype
,structName
)outtype
задает имя генерируемого типа структуры C. coder.cstructname
создает outtype
со свойствами входного типа intype
. Затем он устанавливает TypeName
свойство к structName
. Используйте этот синтаксис для создания объекта type, который вы используете с codegen
-args
опция. Вы не можете использовать этот синтаксис в функции, из которой вы генерируете код.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
возвращает объект type outtype
=
coder.cstructname(intype
,structName
,'extern','HeaderFile',headerfile
)outtype
который задает имя и местоположение внешнего типа структуры C. Генератор кода использует внешне определенный тип структуры для переменных с типом outtype
.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
создает объект type outtype
=
coder.cstructname(intype
,structName
,'extern','HeaderFile',headerfile
,'Alignment',alignment
)outtype
который также задает тип выравнивания С-структуры.
Вы не можете использовать этот синтаксис в блоке MATLAB Function.
Вы не можете применить coder.cstructname
непосредственно к глобальной переменной. Чтобы назвать тип структуры, используемый с глобальной переменной, используйте coder.cstructname
для создания объекта-типа с именем типа структуры. Затем, когда вы бегаете codegen
, укажите, что глобальная переменная имеет этот тип. См. раздел «Назовите тип структуры C, используемый с глобальной структурной переменной».
Для входов массива ячеек имена полей внешне определенных структур должны быть f1
, f2
и так далее.
Вы не можете применить coder.cstructname
непосредственно свойству класса.
Для получения информации о том, как генератор кода определяет типы структурных полей 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).