Параметр конфигурации для задания пользовательских имен для встроенных типов данных MATLAB при генерации кода C/C + +
A coder.ReplacementTypes
объект содержит параметры конфигурации, которые генератор кода использует для создания пользовательских имен типов данных для MATLAB® встроенные типы данных при генерации кода C/C + +.
Вы должны связать coder.ReplacementTypes
объект с Embedded Coder® объект строения (a coder.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
.
Дополнительные сведения об импорте пользовательских определений типов данных из внешних заголовочных файлов см. в разделе Импорт пользовательских определений типов данных из внешних файлов заголовков (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).
Диалоговое окно объекта строения не поддерживается в Online™ MATLAB.
Изменение поведения в будущем релизе
В следующем релизе будут удалены несколько имен файлов, путей или зарезервированных имен в объектах строения кода с помощью векторов символов или строковых скаляров, имеющих разделители. Вместо этого используйте строковые массивы и массив ячеек вектора символов. Для примера, чтобы включить несколько имен заголовочных файлов, можно использовать строковые массивы в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.