主要内容

Coder.CEVAL的未知输出类型

问题

您看到此错误消息:

'coder.ceval'的输出具有未知类型。封闭式表达式无法评估。通过将“码码ICVAL”的输出分配给具有已知类型的变量来指定输出类型。

原因

当代码生成器无法确定A的输出类型时,会发生此错误消息编码器.CEVAL.称呼。

解决方案

使用预期输出类型初始化临时变量。分配输出编码器.CEVAL.到此变量。

例子

假设您有一个C函数调用cfunctionthatreturnsdouble.。您要为函数生成C库代码Foo。代码生成器返回错误消息,因为它无法确定返回类型编码器.CEVAL.

功能Foo%#codegen.CallCunction(Coder.CEVAL('cfunctionthatreturnsdouble'));结尾功能CallCunction(〜)结尾

要修复错误,请使用临时变量定义C函数输出的类型。

功能Foo%#codegen.temp = 0;temp = coder.ceval('cfunctionthatreturnsdouble');CallCunction(TEMP);结尾功能CallCunction(〜)结尾

你也可以使用编码器初始化临时变量。

使用类的示例

假设您有一个带有自定义的类方法。这个课用使用确保对象属性值落在一定范围内的方法。

Classdef.ClassWithSetter.特性预期= []结尾特性(常数)ScalingFactor = 0.001结尾方法功能obj = set.expectedresult(obj,erin)如果erin> = 0 && erin <= 100 erin = erin。* obj.scalingfactor;obj.expectedresult = erin;别的obj.expectedresult = nan;结尾结尾结尾结尾

生成函数的C库代码时Foo,代码生成器会产生错误消息。输入类型进入方法无法确定。

功能Foo%#codegen.obj = classwithsetter;obj.expedresult = coder.ceval('cfunctionthatreturnsdouble');结尾

要修复错误,请使用已知类型初始化临时变量。对于此示例,请使用一个类型的标量级。

功能Foo%#codegen.obj = classwithsetter;temp = 0;temp = coder.ceval('cfunctionthatreturnsdouble');obj.expectedresult = temp;结尾

也可以看看

|