Назначение класса хранения глобальной переменной
coder.storageClass( назначает класс хранения global_name, storage_class)storage_class к глобальной переменной global_name.
Назначьте класс хранения глобальной переменной в функции, которая объявляет глобальную переменную. Присвоение класса хранения в нескольких функциях не требуется.
Для использования необходимо иметь лицензию Embedded Coder ®coder.storageClass. Только при использовании проекта или объекта конфигурации Embedded Coder для создания библиотек или исполняемых файлов C/C + + программное обеспечение для создания кода распознаетcoder.storageClass вызовы.
В функции addglobals_ex, назначьте 'ExportedGlobal' класс хранения данных для глобальной переменной myglobalone и 'ExportedDefine' класс хранения данных для глобальной переменной myglobaltwo.
function y = addglobals_ex(x) %#codegen % Define the global variables. global myglobalone; global myglobaltwo; % Assign the storage classes. coder.storageClass('myglobalone','ExportedGlobal'); coder.storageClass('myglobaltwo','ExportedDefine'); y = myglobalone + myglobaltwo + x; end
Создайте объект конфигурации кода для библиотеки или исполняемого файла.
cfg = coder.config('dll','ecoder', true);
Создать код. В этом примере используется -globals аргумент для указания типов и начальных значений myglobalone и myglobaltwo. Можно также определить глобальные переменные в глобальной рабочей области MATLAB ®. Указание типа входного аргументаx, используйте -args вариант.
codegen -config cfg -globals {'myglobalone', 1, 'myglobaltwo', 2} -args {1} addglobals_ex -report
От начальных значений 1 и 2, codegen определяет, что myglobalone и myglobaltwo иметь тип double. codegen определяет и объявляет экспортируемые переменные myglobalone и myglobaltwo. Он генерирует код, инициализирующий myglobalone кому 1.0 и myglobaltwo кому 2.0.
Просмотр созданного кода для myglobaltwo и myglobalone, нажмите кнопку View report ссылка.
myglobaltwo определяется в Exported data define раздел в addglobals_ex.h.
/* Exported data define */ /* Definition for custom storage class: ExportedDefine */ #define myglobaltwo 2.0
myglobalone определяется в Variable Definitions раздел в addglobals_ex.c.
/* Variable Definitions */ /* Definition for custom storage class: ExportedGlobal */ double myglobalone;
myglobalone объявлен как extern в Variable Declarations раздел в addglobals_ex.h.
/* Variable Declarations */ /* Declaration for custom storage class: ExportedGlobal */ extern double myglobalone;
myglobalone инициализирован в addglobals_ex_initialize.c.
/* Include Files */
#include "addglobals_ex_initialize.h"
#include "addglobals_ex.h"
#include "addglobals_ex_data.h"
/* Function Definitions */
/*
* Arguments : void
* Return Type : void
*/
void addglobals_ex_initialize(void)
{
myglobalone = 1.0;
isInitialized_addglobals_ex = true;
}
В функции addglobal_im, назначьте 'ImportedExtern' класс хранения данных для глобальной переменной myglobal.
function y = addglobal_im(x) % Define the global variable. global myglobal; % Assign the storage classes. coder.storageClass('myglobal','ImportedExtern'); y = myglobal + x; end
Создание файла c:\myfiles\myfile.c которая определяет и инициализирует импортированную переменную myglobal.
#include <stdio.h> /* Variable definitions for imported variables */ double myglobal = 1.0;
Создайте объект конфигурации кода. Настройка параметров генерации кода для включения myfile.c. Для типа вывода 'lib'или если создается только исходный код, можно создать код без предоставления этого файла. В противном случае необходимо предоставить этот файл.
cfg = coder.config('dll','ecoder', true); cfg.CustomSource = 'myfile.c'; cfg.CustomInclude = 'c:\myfiles';
Создайте код. В этом примере используется -globals аргумент для указания типа и начального значения myglobal. Можно также определить глобальные переменные в глобальной рабочей области MATLAB. Для импортированных глобальных переменных программа генерации кода использует начальные значения для определения только типа.
codegen -config cfg -globals {'myglobal', 1} -args {1} addglobal_im -report
От начального значения 1, codegen определяет, что myglobal имеет тип double. codegen объявляет импортированную глобальную переменную myglobal. Он не определяет myglobal или создать код, инициализирующий myglobal. myfile.c предоставляет код, определяющий и инициализирующий myglobal.
Просмотр созданного кода для myglobal, нажмите кнопку View report ссылка.
myglobal объявлен как extern в Variable Declarations раздел в addglobal_im_data.h.
/* Variable Declarations */ /* Declaration for custom storage class: ImportedExtern */ extern double myglobal;
В функции addglobal_imptr, назначьте 'ImportedExternPointer' класс хранения данных для глобальной переменной myglobal.
function y = addglobal_imptr(x) % Define the global variable. global myglobal; % Assign the storage classes. coder.storageClass('myglobal', 'ImportedExternPointer'); y = myglobal + x; end
Создание файла c:\myfiles\myfile.c которая определяет и инициализирует импортированную глобальную переменную myglobal.
#include <stdio.h> /* Variable definitions for imported variables */ double v = 1.0; double *myglobal = &v;
Создайте объект конфигурации кода. Настройка параметров генерации кода для включения myfile.c. Для типа вывода'lib'или если создается только исходный код, можно создать код без предоставления этого файла. В противном случае необходимо предоставить этот файл.
cfg = coder.config('dll','ecoder', true); cfg.CustomSource = 'myfile.c'; cfg.CustomInclude = 'c:\myfiles';
Создайте код. В этом примере используется -globals аргумент для указания типа и начального значения глобальной переменной myglobal. Можно также определить глобальные переменные в глобальной рабочей области MATLAB. Для импортированных глобальных переменных программа генерации кода использует начальные значения для определения только типа.
codegen -config cfg -globals {'myglobal', 1} -args {1} addglobal_imptr -report
От начального значения 1, codegen определяет, что myglobal имеет тип double. codegen объявляет импортированную глобальную переменную myglobal. Он не определяет myglobal или создать код, инициализирующий myglobal. myfile.c предоставляет код, определяющий и инициализирующий myglobal.
Просмотр созданного кода для myglobal, нажмите кнопку View report ссылка.
myglobal объявлен как extern в Variable Declarations раздел в addglobal_imptr_data.h.
/* Variable Declarations */ /* Declaration for custom storage class: ImportedExternPointer */ extern double *myglobal;
global_name - Имя глобальной переменнойglobal_name - имя глобальной переменной, указанное как символьный вектор. global_name должен быть константой времени компиляции.
Пример: 'myglobal'
Типы данных: char
storage_class - Наименование класса хранения'ExportedGlobal' | 'ExportedDefine' | 'ImportedExtern' | 'ImportedExternPointer'Класс хранилища для назначения global_var. storage_class может иметь одно из следующих значений.
| Класс хранения | Описание |
|---|---|
'ExportedGlobal' |
|
'ExportedDefine' | Объявляет переменную с помощью |
'ImportedExtern' | Объявляет переменную как |
'ImportedExternPointer' | Объявляет переменную как |
Если класс хранения не назначен глобальной переменной, за исключением расположения объявления, переменная ведет себя так, как будто имеет 'ExportedGlobal' класс хранения. Для 'ExportedGlobal' класс хранения, глобальная переменная объявлена в файле . Если глобальная переменная не имеет класса хранения, переменная объявляется в файле entry_point_name.h.entry_point_name_data.h
Типы данных: char
После назначения класса хранения глобальной переменной нельзя назначить другой класс хранения этой глобальной переменной.
Класс хранения нельзя назначить постоянной глобальной переменной.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.