主要内容

编码程序

包裹:编码器

在生成的代码中控制内联

句法

编码器.inline('总是')
编码器.inline('从不')
编码器.inline('默认')

描述

编码器.inline('总是')势力内宁生成代码中的当前函数。放置编码程序在它适用的功能内指令。代码生成器不会内联入口点函数和递归函数。此外,代码生成器没有内联功能议案循环或内联函数调用议案循环。

编码器.inline('从不')防止生成的代码中的当前功能的内联。如果要简化MATLAB之间的映射,则防止内嵌®源代码和生成的代码。您可以使用使用方法禁用命令行中的所有功能的内嵌-o禁用:内联选项Codegen.命令。

编码器.inline('默认')使用内部启发式方法来确定是否终止当前功能。通常,启发式产生高度优化的代码。用编码程序只有当您需要微调这些优化时才。

例子

防止功能内限

在此示例中,功能Foo在生成的代码中没有内向:

功能y = foo(x)译码器.inline('绝不');y = x;结尾

在控制流语句中使用coder.inline

您可以使用编码程序在控制流程代码中。如果软件检测到矛盾编码程序指令,生成的代码使用默认的内向启发式并发出警告。

假设您要为具有有限内存使用的系统使用的划分功能生成代码。优化生成的代码中的内存使用,内联_division.功能手动控制内嵌,基于它是否执行标量级或向量划分:

功能Y = Inline_Division(股息,除数)标量级的%,内联产生较小的代码%而不是函数调用自己。如果Isscalar(股息)&&iscalar(divisor)coder.inline('总是');别的%矢量分区产生一个循环。%禁止内联减少代码大小。编码器.inline('绝不');结尾如果任何(divisor == 0)错误('不能划分0');结尾Y =股息/除数;

更多关于

全部收缩

内宁

用该函数的内容(主体)替换函数调用的技术。内联无函数调用的开销,但可以生成更大的C / C ++代码。内联可以为进一步优化生成的C / C ++代码创造机会。

在R2011A介绍