宏定义 (#define)
C 构造
#define myParam 9.8;
导出生成的宏定义
1.打开示例模型 ex_param_macro
。
2.在模型中,选择 Gain 模块。在属性检查器中,将增益参数的值设置为 myParam
。
3.点击参数值旁边的操作按钮(具有三个纵点的按钮),然后选择创建。
4.在“创建新数据”对话框中,将值设置为 Simulink.Parameter(9.8)
。点击创建。基础工作区中将显示一个 Simulink.Parameter
对象 myParam
。Gain 模块使用该对象来设置“增益”参数的值,在本例中为 9.8
。
5.在代码生成选项卡上,点击在 Coder App 中配置按钮。在代码映射编辑器中,将存储类设置为 Define
。点击确定。
6.要编译模型并生成代码,请按 Ctrl+B。
生成的头文件 ex_param_macro.h
将 myParam
定义为宏。
/* Definition for custom storage class: Define */ #define myParam 9.8 /* Referenced by: '<Root>/Gain' */
重用手写代码中的宏
1.在代码映射编辑器中,在参数选项卡下点击更新代码映射按钮。
2.将 myParam
的存储类从 Define
更改为 ImportedDefine
。
3.在属性检查器的代码部分下,将头文件设置为 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
的定义是否存在。
#include "rtwtypes.h" #include "external_params.h" /* * Check that imported macros with storage class "ImportedDefine" are defined */ #ifndef myParam #error The value of parameter "myParam" is not defined #endif