Main Content

宏定义 (#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.hmyParam 定义为宏。

/* 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

相关主题