主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

函数定义

R2026a
为代码生成定义和调用函数

在创建用于代码生成的 MATLAB® 函数时,有一些特殊的注意事项。例如,使用 varargin 和 varargout、递归函数、匿名函数和嵌套函数时,存在某些限制。为了生成 MATLAB 递归函数的代码,代码生成器使用编译时递归或运行时递归。为了生成高效的 C/C++ 代码,代码生成器有时会创建一个函数的多个版本,称为函数特化。在某些情况下,您可以通过使用 coder.ignoreSize 和 coder.ignoreConst 来阻止代码生成器创建函数特化。生成 MEX 函数时,您可以绕过 MATLAB 代码中特定函数的代码生成,改用 MATLAB 引擎来执行调用。为此,请使用 coder.extrinsic 构造。

函数

coder.extrinsic将函数声明为外部函数,并在 MATLAB 中执行它
coder.ignoreConst防止将表达式的常量值用于函数特化
coder.ignoreSizePrevent code generator from creating function specializations for constant-size expressions
coder.mustBeComplexValidate that value lies on the complex plane (自 R2023b 起)
coder.mustBeConst验证值为编译时常量 (自 R2023b 起)
coder.noImplicitExpansionInFunctionDisable implicit expansion within the specified function in the generated code
coder.sameSizeBinaryOpApply element-wise binary operations without implicit expansion
coder.specifyAsGPUSpecify that value is a GPU input to an entry-point function for GPU code generation (自 R2023b 起)

主题

疑难解答

for 循环中 varargin 或 varargout 的非常量索引

在代码生成器无法确定 for 循环内 varargin 或 varargout 的索引值时对错误进行故障排除。

Troubleshoot Replicated Functions in Generated Code

Troubleshoot duplicate functions in the generated code.

输出变量必须在运行时递归调用之前赋值

对运行时递归的输出变量赋值进行故障排除。

Resolve Error: Compile-Time Recursion Limit Reached

Troubleshoot error when recursion during code generation exceeds the limit.

解决错误:数组大小不兼容

对代码生成过程中出现的大小不兼容性错误进行故障排除。

Resolve Issue: coder.inline("never") and coder.nonInlineCall Do Not Prevent Function Inlining

Troubleshoot instances of coder.inline('never') not preventing inlining.

解决错误:变量在使用前必须完全定义

对变量在使用前未定义导致的代码生成错误进行故障排除。

Resolve Error: Cannot Determine the Exact Number of Iterations for a Loop

Troubleshoot error when code generator is unable to determine the number of iterations in a loop.