Параметр конфигурации для указания пользовательских имен для встроенных типов данных MATLAB в генерации кода C/C + +
A coder.ReplacementTypes объект содержит параметры конфигурации, используемые генератором кода для создания пользовательских имен типов данных для встроенных типов данных MATLAB ® в генерации кода C/C + +.
Необходимо связать coder.ReplacementTypes с объектом конфигурации Embedded Coder ® ( acoder.EmbeddedCodeConfig объект), который вы передаете codegen функция.
Вы можете получить доступ coder.ReplacementTypes свойства из интерфейса командной строки (см. раздел Задание пользовательских имен для встроенных типов данных MATLAB) или диалогового окна для связанного объекта конфигурации (см. раздел Доступ к свойствам типов замены через диалоговое окно).
Используйте coder.config для создания функции coder.EmbeddedCodeConfig объект для формирования автономного кода. Когда coder.config функция создает coder.EmbeddedCodeConfig объект, он устанавливает ReplacementTypes свойство для coder.ReplacementTypes объект.
double - Пользовательское имя для double тип данныхПользовательское имя для double тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
single - Пользовательское имя для single тип данныхПользовательское имя для single тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
uint8 - Пользовательское имя для uint8 тип данныхПользовательское имя для uint8 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
uint16 - Пользовательское имя для uint16 тип данныхПользовательское имя для uint16 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
uint32 - Пользовательское имя для uint32 тип данныхПользовательское имя для uint32 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
uint64 - Пользовательское имя для uint64 тип данныхПользовательское имя для uint64 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
int8 - Пользовательское имя для int8 тип данныхПользовательское имя для int8 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
int16 - Пользовательское имя для int16 тип данныхПользовательское имя для int16 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
int32 - Пользовательское имя для int32 тип данныхПользовательское имя для int32 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
int64 - Пользовательское имя для int64 тип данныхПользовательское имя для int64 тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
char - Пользовательское имя для char тип данныхПользовательское имя для char тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
logical - Пользовательское имя для logical тип данныхПользовательское имя для logical тип данных в сгенерированном коде C/C + +, указанном как вектор символов или строковый скаляр.
IsExtern - Определение типа импорта из внешних файлов заголовковfalse (по умолчанию) | true | логическийВключение или отключение импорта определений типов из внешних файлов заголовков для использования в сгенерированном коде C/C + +.
| Стоимость | Описание |
|---|---|
false | Это значение является значением по умолчанию. В файле создаются пользовательские определения типов |
true | Для создания кода допускается импорт определений типов из внешних файлов заголовков. Указанные файлы заголовков включены в |
HeaderFiles - Имя внешнего файла заголовка для импортаИмена внешних заголовочных файлов, содержащих пользовательские определения типов.
Несколько файлов заголовков, указанных как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Строковый массив | Строковый массив в |
| Массив ячеек символьных векторов | Массив ячеек символьных векторов в |
| Символьный вектор | Разделенный точкой с запятой список имен заголовочных файлов в Примечание Указание нескольких записей в объектах конфигурации кода с использованием символьных векторов будет удалено в следующей версии. Используйте строковый массив и массив ячеек символьного вектора. Дополнительные сведения см. в разделе Вопросы совместимости. |
Напишите функцию MATLAB, из которой можно создать код. В этом примере используется функция myAdd.m, который возвращает сумму его входных данных.
function c = myAdd(a,b) c = a + b; end
Создать coder.EmbeddedCodeConfig для создания статической библиотеки.
cfg = coder.config('lib','ecoder',true);
Установите EnableCustomReplacementTypes кому true.
cfg.EnableCustomReplacementTypes = true;
Укажите пользовательские имена для встроенных типов данных MATLAB. Например, в коде double назван как Custom_Double и int8 назван как Custom_Int8.
cfg.ReplacementTypes.double = "Custom_Double"; cfg.ReplacementTypes.int8 = "Custom_Int8";
Создание кода с помощью codegen функции и -config вариант.
codegen myAdd.m -args {1,int8(1)} -config cfg -report
Созданный код содержит имена пользовательских типов данных.
Создание папки для записи myFiles.
Напишите функцию MATLAB, из которой можно создать код. Сохраните функцию в myFiles. В этом примере используется функция myAdd.m, который возвращает сумму его входных данных.
function c = myAdd(a,b) c = a + b; end
Напишите файл заголовка myHeader.h который содержит определения типов для двух входов функции myAdd.m. Сохранить в myFiles.
#if !defined(MYHEADER) #define MYHEADER typedef double Custom_Double; typedef char Custom_Int8; #endif
Создать coder.EmbeddedCodeConfig для создания статической библиотеки.
cfg = coder.config('lib','ecoder',true);
Укажите пользовательские имена для встроенных типов данных MATLAB. Например, в коде double назван как Custom_Double и int8 назван как Custom_Int8.
cfg.EnableCustomReplacementTypes = true; cfg.ReplacementTypes.double = "Custom_Double"; cfg.ReplacementTypes.int8 = "Custom_Int8";
Укажите свойства конфигурации для импорта внешних файлов заголовков.
% Include single header file cfg.ReplacementTypes.IsExtern = true; cfg.ReplacementTypes.HeaderFiles = "myHeader.h"; cfg.CustomInclude = 'C:\myFiles'; % Include path of the header file
% Include multiple header files cfg.ReplacementTypes.IsExtern = true; cfg.ReplacementTypes.HeaderFiles = "myHeader1.h;myHeader2.h;myHeader3.h"; cfg.CustomInclude = '"C:\Program Files\MATLAB\myFiles"'; % Include path of the header files
Создание кода с помощью codegen функции и -config вариант.
codegen myAdd.m -args {1,int8(1)} -config cfg -report
В созданном коде myAdd_types.h включает внешний файл заголовка myHeader.h.
Дополнительные сведения об импорте определений пользовательских типов данных из внешних файлов заголовков см. в разделе Импорт определений пользовательских типов данных из внешних файлов заголовков (встроенный кодер).
Откройте диалоговое окно для объекта конфигурации, который ссылается на coder.ReplacementTypes объект. Например:
cfg = coder.config('lib'); open('cfg');
В диалоговом окне перейдите на вкладку «Внешний вид кода».
Выберите Включить замену пользовательского типа данных. В таблице Замена настраиваемого типа данных (Custom Data Type Replacement) перечислены имена поддерживаемых типов данных. Укажите пользовательские имена для этих типов данных и нажмите клавишу ВВОД.
Можно импортировать собственные пользовательские определения типов из внешних файлов заголовков. Установите флажок Импортировать пользовательские типы из внешних файлов заголовков. В поле Текст заголовочных файлов введите список имен внешних заголовочных файлов, разделенных точкой с запятой. Дополнительные сведения см. в разделе Импорт определений пользовательских типов данных из внешних файлов заголовков (встроенный кодер).
Диалоговое окно объекта конфигурации не поддерживается в MATLAB Online™.
Изменение поведения в будущем выпуске
В следующем выпуске будет удалено несколько имен файлов, путей или зарезервированных имен в объектах конфигурации кода с использованием векторов символов или скаляров строк, имеющих разделители. Используйте строковые массивы и массив ячеек символьного вектора. Например, для включения нескольких имен заголовочных файлов можно использовать либо строковый массив в ReplacementTypes.HeaderFiles как cfg.ReplacementTypes.HeaderFiles = ["myHeader1.h","myHeader2.h","myHeader3.h"] или массив ячеек символьных векторов как cfg.ReplacementTypes.HeaderFiles = {'myHeader1.h','myHeader2.h','myHeader3.h'}.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.