Определения макросов (# define

)

Конструкция C

#define myParam 9.8;

Экспорт сгенерированного определения макроса

1. Откройте пример модели ex_param_macro.

2. В модели выберите блок Gain. В Property Inspector установите значение параметра Gain равным myParam.

3. Рядом со значением параметров нажмите кнопку действия (кнопка с тремя вертикальными точками) и выберите Create.

4. В диалоговом окне «Создание новых данных» установите значение Simulink.Parameter(9.8). Нажмите кнопку Создать. A Simulink.Parameter объект, myParam, появляется в базовом рабочем пространстве. Блок Gain использует объект, чтобы задать значение параметра Gain, в этом случае 9.8.

5. На вкладке Генерации кода нажмите кнопку Configure in Coder Приложения. В редакторе Отображения установите для класса памяти значение Define. Нажмите кнопку ОК.

6. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.

Сгенерированный заголовочный файл ex_param_macro.h определяет myParam как макрос.

/* Definition for custom storage class: Define */
#define myParam                        9.8                       /* Referenced by: '<Root>/Gain' */

Повторно используйте макрос из рукописного кода

1. В редакторе Отображения на вкладке Parameters нажмите кнопку Update Code Mappings.

2. Изменение Класса памяти myParam от Define на ImportedDefine.

3. В Property Inspector в разделе Секции кода установите значение файла заголовка external_params.h. Сгенерированный код импортирует определение макроса из пользовательского файла заголовка с именем external_params.h.

4. В текущей папке создайте заголовочный файл C external_params.h, который содержит #define оператор.

#ifndef _EXTERNAL_PARAMS
#define _EXTERNAL_PARAMS

#define myParam 9.8

#endif

/* EOF */

5. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.

Сгенерированный заголовочный файл ex_param_macro.h не задает макрос. Вместо этого файл включает (#include) пользовательский файл заголовка external_params.h.

/* Includes for objects with custom storage classes. */
#include "external_params.h"

Исходный файл ex_param_macro.c содержит предохранитель, чтобы проверить, что определение для myParam существует.

/*
 * Check that imported macros with storage class "ImportedDefine" are defined
 */
#ifndef myParam
#error The variable for the parameter "myParam" is not defined
#endif

Похожие темы