文档

coder.ignoreConst

防止使用常数的表达式值函数的专门化

描述

例子

coder.ignoreConst (表达式)防止代码生成器使用的常量值表达式创建功能专门化coder.ignoreConst(表达)回报的价值表达式

例子

全部折叠

使用coder.ignoreConst为了防止功能专门化的一个函数,称为常量值。

编写的函数call_myfn,电话myfcn

函数(x, y) = call_myfcn (n)% # codegenx = myfcn (n,“模型”);y = myfcn (n,“mode2”);结束函数y = myfcn (n,模式)coder.inline (“永远”);如果比较字符串(模式,“模型”)y = n;其他的y = n;结束结束

生成独立的C代码。例如,生成一个静态库。使代码生成报告。

codegen配置:自由call_myfcnarg游戏{1}报告

在代码生成的报告中,您可以看到两个函数专门化call_myfcn

代码生成器创建call_myfcn > myfcn > 1模式的价值“模型”。它创造了call_myfcn > myfcn > 2模式的价值“mode2”

在生成的C代码,您会看到专门化my_fcnb_my_fcn

静态双b_myfcn(双n){返回- n;静态双myfcn}(双n){返回n;}

防止功能专门化,指示值的代码生成器忽略模式参数是不变的。

函数(x, y) = call_myfcn (n)% # codegenx = myfcn (n, coder.ignoreConst (“模型”));y = myfcn (n, coder.ignoreConst (“mode2”));结束函数y = myfcn (n,模式)coder.inline (“永远”);如果比较字符串(模式,“模型”)y = n;其他的y = n;结束结束

生成C代码。

codegen配置:自由call_myfcnarg游戏{1}报告

在代码生成报告,您没有看到多个功能专门化。

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

输入参数

全部折叠

更多关于

全部折叠

功能专业化

版本的函数的输入类型,尺寸,复杂性,或价值是定制特定的函数调用。

功能专业化生产有效的C代码的代码重复。代码生成报告显示所有MATLAB函数代码生成器创建专门化。然而,专门化可能不会出现在生成的C / c++代码由于后来转换或优化。

提示

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

  • coder.ignoreConst(表达)防止代码生成器使用的常量值表达式创建功能专门化。它并不妨碍其他使用恒定值的代码生成。

介绍了R2017a