位域
C 构造
typedef struct {
unsigned int p1 : 1;
unsigned int p2 : 1;
unsigned int p3 : 1;
} my_struct_type
过程
1.打开示例模型 ex_struct_bitfield_CSC。该模型包含三个 Constant 模块和三个 Outport 模块。

2.打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器。
3.在模型数据编辑器中,在参数选项卡的值列中,观测第一个 Constant 模块的值为 p1。点击参数值旁边的操作按钮(具有三个纵点的按钮),然后选择创建。
4.在“创建新数据”对话框中,将值设置为 Simulink.Parameter(false)。点击创建。基础工作区中将显示一个 Simulink.Parameter 对象 p1。该对象存储布尔值 false,并使用数据类型 boolean。
5.在 Simulink.Parameter 属性对话框中,点击确定。
6.使用模型数据编辑器配置其他 Constant 模块,以引用名为 p2 和 p3 的新参数对象。
7.打开 Embedded Coder。
8.在 C 代码选项卡上,选择代码接口 > 个体元素代码映射。
9.在代码映射编辑器中,在参数选项卡下点击更新代码映射按钮。
10.使用存储类列将存储类 BitField 应用于所有参数对象。
10.在属性检查器中,使用结构体名称列将每个对象配置为使用相同的结构体类型 my_struct。
11.从模型中生成代码。
结果
生成的头文件 ex_struct_bitfield_CSC.h 定义结构体类型 my_struct_type。
/* Type definition for custom storage class: BitField */
typedef struct myStruct_tag {
uint_T p1 : 1; /* Referenced by: '<Root>/Constant1' */
uint_T p2 : 1; /* Referenced by: '<Root>/Constant2' */
uint_T p3 : 1; /* Referenced by: '<Root>/Constant3' */
} myStruct_type;
生成的源文件 ex_struct_bitfield_CSC.c 定义并初始化结构体变量 my_struct。
/* Definition for custom storage class: BitField */
myStruct_type myStruct = {
/* p1 */
false,
/* p2 */
false,
/* p3 */
false
};