Структура имени C вводит в сгенерированном коде
coder.cstructname называет сгенерированный или внешне заданный тип структуры C, чтобы использовать для переменных MATLAB®, которые представлены как структуры в сгенерированном коде.
coder.cstructname(var,structName)coder.cstructname(var,structName,'extern','HeaderFile',headerfile)coder.cstructname(var,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)outtype = coder.cstructname(intype,structName)outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile)outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile,'Alignment',alignment)называет тип структуры C сгенерированным для переменной MATLAB coder.cstructname(var,structName) var. Входной параметр var может быть структурой или массивом ячеек. Используйте этот синтаксис в функции, от которой вы генерируете код. Поместите coder.cstructname после определения var и перед первым использованием var. Если var является точкой входа (верхний уровень) аргумент входного параметра функции, место coder.cstructname в начале функции, перед какими-либо операторами управления.
указывает, что тип структуры C, чтобы использовать для coder.cstructname(var,structName,'extern','HeaderFile',headerfile) var имеет имя structName и задан во внешнем файле, headerfileName.
Возможно использовать опцию 'extern', не задавая заголовочный файл. Однако это - лучшая практика задать заголовочный файл так, чтобы генератор кода произвел оператор #include в правильном месте.
также указывает, что выравнивание памяти во время выполнения для внешне заданной структуры вводит coder.cstructname(var,structName,'extern','HeaderFile',headerfile,'Alignment',alignment) structName. Если вы Встроили Coder® и пользуетесь Заменяющими Библиотеками пользовательского кода (CRLs), задаете выравнивание так, чтобы генератор кода мог совпадать с функциями CRL, которые требуют выравнивания для структур. Смотрите Выравнивание Данных для Замены Кода (Embedded Coder).
возвращает массив структур или текстовый объект массива ячеек outtype = coder.cstructname(intype,structName) outtype, который задает имя типа структуры C, чтобы сгенерировать. coder.cstructname создает outtype со свойствами входного типа intype. Затем это устанавливает свойство TypeName на structName. Используйте этот синтаксис, чтобы создать текстовый объект, который вы используете с
опцией -args codegen. Вы не можете использовать этот синтаксис в функции, от которой вы генерируете код.
Вы не можете использовать этот синтаксис в блоке MATLAB function.
возвращает текстовый объект outtype = coder.cstructname(intype,structName,'extern','HeaderFile',headerfile) outtype, который задает название и местоположение внешне заданного типа структуры C. Генератор кода использует внешне заданный тип структуры для переменных с типом outtype.
Вы не можете использовать этот синтаксис в блоке MATLAB function.
Вы не можете применить coder.cstructname непосредственно к глобальной переменной. Чтобы назвать тип структуры, чтобы использовать с глобальной переменной, используйте coder.cstructname, чтобы создать текстовый объект, который называет тип структуры. Затем когда вы запускаете codegen, указываете, что глобальная переменная имеет тот тип. Смотрите Имя Тип Структуры C, чтобы Использовать С Глобальной Переменной Структуры (MATLAB CODER).
Для входных параметров массива ячеек именами полей внешне заданных структур должен быть f1, f2, и так далее.
Для получения информации о том, как генератор кода определяет типы 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,k,n); 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).