修改图的动作语言
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运算符访问工作区变量代码生成中不支持的函数
十六进制和单精度表示法
上下文相关常量