修改图的动作语言
Simulink® 模型中的 Stateflow® 图具有一个动作语言属性,该属性定义状态和转移动作的语法。图的画布左下角的图标表示该图的动作语言。
MATLAB® 作为动作语言。
C 语言作为动作语言。
您可以在“图属性”对话框的动作语言框中更改图的动作语言。有关详细信息,请参阅使用 MATLAB 和 C 作为动作语言语法时的差异。
更改默认动作语言
MATLAB 是新 Stateflow 图的默认动作语言语法。要创建使用 C 语言作为动作语言的图,请输入:
sfnew -C
要更改新图的默认动作语言,请使用 sfpref
函数。例如,要将 C 设置为新图的动作语言,请输入:
sfpref(ActionLanguage="C");
使用 MATLAB 作为动作语言时自动更正
使用 MATLAB 作为动作语言的 Stateflow 图会自动将常见的 C 构造更正为 MATLAB 语法:
递增和递减运算,如
a++
和a--
。例如,a++
更改为a = a+1
。赋值运算,如
a += b
、a –= b
、a *= b
和a /= b
。例如,a += b
更改为a = a+b
。求值运算,如
a != b
和!a
。例如,a != b
更改为a ~= b
。注释标记
//
和/* */
更改为%
。
要禁用此预设项,请使用 sfpref
函数:
sfpref(EnableLabelAutoCorrectionForMAL=false);
C 到 MATLAB 的语法转换
对于非空图,在您将动作语言属性从 C 更改为 MATLAB 后,图顶部会出现一条通知。通知提供将部分 C 语法转换为 MATLAB 语法的选项。在通知中,点击链接可让 Stateflow 转换图中的语法。转换的 C 语法构造包括:
从 0 开始进行索引。
递增和递减运算,如
a++
和a--
。例如,a++
更改为a = a+1
。赋值运算,如
a += b
、a –= b
、a *= b
和a /= b
。例如,a += b
更改为a = a+b
。二元运算,如
a %% b
、a >> b
和a << b
。例如,a %% b
更改为rem(a,b)
。按位运算,如
a ^ b
、a & b
和a | b
。例如,如果图属性启用 C 语言位运算处于选中状态,则a ^ b
将更改为bitxor(a,b)
。C 样式注释标记。例如,
//
和/* */
更改为%
。
如果图包含无法转换为 MATLAB 的 C 构造,Stateflow 会在对话框中显示一条消息。点击警告链接会在诊断查看器中显示警告。选择是否继续转换支持的语法。未转换为 MATLAB 的 C 构造包括:
使用
cast
和type
的显式类型转换运算符,如
&
、*
和:=
自定义数据
使用
ml
运算符访问工作区变量代码生成中不支持的函数
十六进制和单精度表示法
上下文相关常量