主要内容

coder.ceval未知输出类型

问题

你看到这个错误信息:

的编码器的输出。ceval”未知的类型。封闭表达式无法评估。指定分配的输出类型的编码器的输出。ceval”与一个已知的变量类型。

导致

这个错误消息发生在代码生成器的输出类型不能确定coder.ceval调用。

解决方案

初始化一个临时变量与预期的输出类型。指定的输出coder.ceval这个变量。

例子

假设您有一个C函数调用cFunctionThatReturnsDouble。你想为一个函数生成C库代码喷火。代码生成器返回错误消息,因为它不能确定的返回类型coder.ceval

函数喷火% # codegencallFunction (coder.ceval (“cFunctionThatReturnsDouble”));结束函数callFunction (~)结束

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

函数喷火% # codegentemp = 0;temp = coder.ceval (“cFunctionThatReturnsDouble”);callFunction(临时);结束函数callFunction (~)结束

您还可以使用coder.opaque初始化临时变量。

例子使用类

假设您有一个类和一个定制的方法。这个类使用方法以确保对象属性值落在一定的范围内。

classdefclassWithSetter属性expectedResult = []结束属性(恒)scalingFactor = 0.001结束方法函数obj = set.expectedResult (obj,艾琳)如果艾琳> = 0 & &艾琳< = 100艾琳=艾琳。* obj.scalingFactor;obj。expectedResult =艾琳;其他的obj。expectedResult =南;结束结束结束结束

当生成C库函数的代码喷火,代码生成器生成的错误消息。到的输入类型不能确定的方法。

函数喷火% # codegenobj = classWithSetter;obj。expectedResult = coder.ceval (“cFunctionThatReturnsDouble”);结束

修复错误,初始化一个临时变量与一个已知的类型。对于这个示例,使用一种标量的两倍。

函数喷火% # codegenobj = classWithSetter;temp = 0;temp = coder.ceval (“cFunctionThatReturnsDouble”);obj。expectedResult = temp;结束

另请参阅

|