Имя типа структуры 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 ® и используются пользовательские библиотеки замены кода (CRL), укажите выравнивание, чтобы генератор кода мог соответствовать функциям CRL, требующим выравнивания для структур. См. раздел Выравнивание данных для замены кода (встроенный кодер).
возвращает объект типа структуры или массива ячеек outtype = coder.cstructname(intype,structName)outtype указывает имя создаваемого типа структуры C. coder.cstructname создает outtype со свойствами типа ввода intype. Затем он устанавливает TypeName свойство для structName. Этот синтаксис используется для создания объекта типа, используемого с codegen
-args вариант. Этот синтаксис нельзя использовать в функции, из которой создается код.
Этот синтаксис нельзя использовать в блоке функции MATLAB.
возвращает объект типа outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile)outtype указывает имя и местоположение внешнего типа структуры C. Генератор кода использует внешний тип структуры для переменных с типом outtype.
Этот синтаксис нельзя использовать в блоке функции MATLAB.
создает объект типа outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)outtype который также определяет выравнивание типа структуры C.
Этот синтаксис нельзя использовать в блоке функции MATLAB.
Вы не можете применить 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:
Структуры ввода и вывода функциональных блоков MATLAB связаны с сигналами шины. Сгенерированное имя типа структуры происходит от имени сигнала шины. Не использовать coder.cstructname для присвоения имени типу структуры входных или выходных сигналов. См. раздел Создание структур в функциональных блоках MATLAB (Simulink).
Генератор кода создает имена типов структуры в соответствии с правилами именования идентификаторов, даже если тип структуры называется coder.cstructname. При наличии встроенного кодера можно настроить правила именования. См. раздел Построение сгенерированных идентификаторов (встроенный кодер).