Присвойте класс памяти глобальной переменной
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.