主要内容

Coder.ignoreConst.

防止使用表达式的恒定值为功能专业

描述

例子

Coder.ignoreConst(表达防止代码生成器使用常量值表达去创造功能专业Coder.ignoreConst(表达式)返回值表达

例子

全部收缩

采用Coder.ignoreConst.防止使用常量值调用的函数的函数专业。

写下功能call_myfn.,呼叫myfcn.

功能[x,y] = call_myfcn(n)%#codegen.x = myfcn(n,'mode1');y = myfcn(n,'mode2');结尾功能y = myfcn(n,mode)coder.inline('绝不');如果strcmp(模式,'mode1')y = n;别的y = -n;结尾结尾

生成独立的C代码。例如,生成静态库。启用代码生成报告。

Codegen.-config:libcall_myfcn.-  args.{1}-报告

在代码生成报告中,您可以看到两个功能专门call_myfcn.

代码生成器创建call_myfcn> myfcn> 1为了模式'mode1'。它创建call_myfcn> myfcn> 2为了模式'mode2'

在生成的C代码中,您可以看到专业化my_fcn.b_my_fcn.

静态双b_myfcn(double n){return-n;静态双重myfcn(双n){return n;}

为防止功能专业化,请指示代码生成器忽略该值模式参数是恒定的。

功能[x,y] = call_myfcn(n)%#codegen.x = myfcn(n,coder.ignoreconst('mode1'));y = myfcn(n,coder.ignoreconst('mode2'));结尾功能y = myfcn(n,mode)coder.inline('绝不');如果strcmp(模式,'mode1')y = n;别的y = -n;结尾结尾

生成C代码。

Codegen.-config:libcall_myfcn.-  args.{1}-报告

在代码生成报告中,您没有看到多个函数专业化。

在生成的C代码中,您会看到一个函数my_fcn.

输入参数

全部收缩

表达式将被视为不合适的价值,指定为matlab表达式。

更多关于

全部收缩

功能专业化

用于为特定调用函数的输入类型,大小,复杂性或值的函数的版本。

功能专业化以代码重复为代价生成高效的C代码。代码生成报告显示代码生成器创建的所有MATLAB功能专门。但是,由于稍后的转换或优化,专业化可能不会出现在生成的C / C ++代码中。

提示

  • 对于某些递归函数调用,您可以使用Coder.ignoreConst.强制运行时递归。看到强制代码生成器使用运行时间递归

  • Coder.ignoreConst(表达式)防止代码生成器使用常量值表达创建功能专业化。在代码生成期间,它不会阻止恒定值的其他用途。

在R2017A介绍