Присвойте класс памяти глобальной переменной
coder.storageClass(global_name, storage_class)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) % 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 "rt_nonfinite.h" #include "addglobals_ex.h" #include "addglobals_ex_initialize.h" /* Named Constants */ #define b_myglobalone (1.0) /* Function Definitions */ /* * Arguments : void * Return Type : void */ void addglobals_ex_initialize(void) { rt_InitInfAndNaN(8U); myglobalone = b_myglobalone; }
В функциональном 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. Для вывода type'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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.