Simulink代码生成:来自function Caller块的函数存根及其返回值/参数



在我的Simulink模型中,我有几个像这样的函数调用者块:简单函数调用块

函数原型就是y = someFunction()。输出参数使用自定义枚举类型,并以someEnum(1)给出。

整个输出信号定义为一维。

当从模型生成代码时,这些函数调用者总是以

的预期形式生成一个函数存根extern someEnum someFunction(void);.

然而,在最近进行了大量更改之后,我刚刚注意到代码生成现在突然以

的形式生成函数存根extern void someFunction(someEnum *rty_y);

适用于部分(不是全部!)Function Caller block .

我已经比较了关于函数调用者块和我能找到的相关输出信号的每个参数,但我找不到受影响的与当前版本或以前版本中相同块中预期工作的那些之间的任何差异。所有的函数和信号都被重命名了,但对于那些不受影响的Function Caller块也是如此。

代码生成选项也是相同的。

我试图从帮助文件中理解什么可能导致编码器使用指针参数而不是函数存根的直接返回值,但找不到任何东西。

如果能提示代码生成器使用指针的原因,我将不胜感激。

找到问题。一些受影响的代码块的C/c++返回参数设置为"void";在《配置C/c++函数接口》中;对话框。

一些受影响的块(不幸的是,这两个我之前也检查过)仍然被设置为"y"在这里,我必须将设置更改为"void";然后回到"你"在得到期望的结果之前。