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