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