coder.storageClass

Присвойте класс памяти глобальной переменной

Описание

пример

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 должно быть постоянное время компиляции.

Пример: 'myglobal'

Типы данных: char

Класс памяти, чтобы присвоить global_var. storage_class может иметь одно из следующих значений.

Класс памятиОписание
'ExportedGlobal'
  • Задает переменную в Variable Definitions раздел файла C entry_point_nameC.

  • Объявляет переменную как extern в Variable Declarations раздел заголовочного файла entry_point_nameH

  • Инициализирует переменную в функциональном entry_point_name_initialize.h.

'ExportedDefine'

Объявляет переменную с #define директива в Exported data define раздел заголовочного файла entry_point_name.h.

'ImportedExtern'

Объявляет переменную как extern в Variable Declarations раздел заголовочного файла entry_point_name_data.h. Внешний код должен предоставить определение переменной.

'ImportedExternPointer'

Объявляет переменную как extern указатель в Variable Declarations раздел заголовочного файла entry_point_name_data.h. Внешний код должен задать допустимую переменную указателя.

  • Если вы не присваиваете класс памяти глобальной переменной, за исключением местоположения объявления, переменная ведет себя как оно, имеет 'ExportedGlobal' класс памяти. Для 'ExportedGlobal' класс памяти, глобальная переменная объявляется в файле entry_point_nameH. Когда глобальная переменная не имеет класса памяти, переменная объявляется в файле entry_point_name_data.h.

Типы данных: char

Ограничения

  • После того, как вы присвоите класс памяти глобальной переменной, вы не можете присвоить различный класс памяти той глобальной переменной.

  • Вы не можете присвоить класс памяти постоянной глобальной переменной.

Введенный в R2015b