CAPL 将结构体作为方法参数传递

CAPL passing a struct as method parameter

提问人:CAPLUser 提问时间:10/6/2023 最后编辑:CAPLUser 更新时间:10/6/2023 访问量:55

问:

我需要在CANoe中定义一个结构,然后我需要创建这些结构的系统变量,这没关系,但我需要使用结构作为参数,以便为所有结构提供单一方法。例如:

我用粗体突出显示了“** struct myStruct**”此时不起作用的部分。

void TestMethod(**struct myStruct**, char myText[])
{
   sysSetVariableString(sysvarMember::VarNamespace::structVar.textField, myText);
}

CANoe结构体创建:在此输入镜像描述

在方法中将结构对象作为参数发送的正确语法如何?

谢谢。

我尝试使用数据类型“VarNamespace::sctructVar”,但不起作用。 我已经检查了 CAPL 文档,但在任何示例中都没有使用结构作为参数。

我希望能够创建以 struct 数据类型作为参数的方法。

方法 struct 参数传递 capl

评论

0赞 MSpiller 10/6/2023
这不是一个结构体,而是一个结构体类型的系统变量。不支持将 struct 类型的 SysVar 作为 CAPL 参数。由于所有系统都是“全局”的,您到底想实现什么?
0赞 CAPLUser 10/6/2023
我想创建 s 结构来存储变量数据。我想定义变量的最大值和最小值,并想创建一个通用方法来设置此值,然后使用其他方法来检查变量是否超出范围(我计划在 on 消息、on sysvar_change或 on 信号中调用此方法......
0赞 MSpiller 10/6/2023
我想指出的。系统变量总是只有一个实例(它们是全局单例)。因此,实际上没有必要将其作为参数传递。但是,当您使用结构(在 CAPL 中定义)时,可以有该结构的多个实例。后者可以简单地用作 CAPL 函数的参数。哪种方式可行取决于您的用例。
0赞 CAPLUser 10/9/2023
我现在明白了,我认为这个选项更适合我的情况。多谢!

答: 暂无答案