Параметр конфигурации, чтобы задать пользовательские имена для MATLAB встроенные типы данных в генерации кода C/C++
coder.ReplacementTypes
объект содержит параметры конфигурации, что генератор кода использует для создания имен пользовательского типа данных для MATLAB® встроенные типы данных в генерации кода C/C++.
Необходимо сопоставить coder.ReplacementTypes
объект с объектом настройки Embedded Coder® (coder.EmbeddedCodeConfig
объект), что вы передаете codegen
функция.
Можно получить доступ к coder.ReplacementTypes
свойства от любого, интерфейс командной строки (см., Задает Пользовательские Имена для MATLAB Встроенные Типы данных), или диалоговое окно для связанного объекта настройки (см. Access Replacement Types Properties Через Диалоговое окно).
Используйте 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
.
Чтобы читать больше об импорте определений пользовательского типа данных от внешних заголовочных файлов, см. Определения Пользовательского типа данных Импорта от Внешних Заголовочных файлов (Embedded Coder).
Откройте диалоговое окно для объекта настройки, который относится к coder.ReplacementTypes
объект. Например:
cfg = coder.config('lib'); open('cfg');
В диалоговом окне кликните по вкладке Code Appearance.
Выберите Enable custom data type replacement. Таблица Custom Data Type Replacement приводит имя поддерживаемых типов данных. Задайте свои пользовательские имена для этих типов данных и нажмите Enter.
Можно импортировать собственные определения типа из внешних заголовочных файлов. Установите флажок Import custom types from external header files. В текстовом поле Header files введите разделенный от точки с запятой список внешних имен заголовочного файла. Для получения дополнительной информации см. Определения Пользовательского типа данных Импорта от Внешних Заголовочных файлов (Embedded Coder).
Диалоговое окно объекта настройки не поддерживается в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.