我在 Vector CANoe 中开发 CAPL 脚本,我需要定义几个返回文本字符串的函数。在 C 语言中,我会写这样的东西:
char * ErrorCodeToMsg(int code)
或
char [] ErrorCodeToMsg(int code)
在 CAPL 中,两个定义都会失败并出现解析错误
。到目前为止我想出的唯一可行的解决方案是:
variables {
char retval[256];
}
void ErrorCodeToMsg(int code) {
char [] msg = "Hello word";
strncpy(retval, msg, 256);
}
当然,这非常难看,因为每次调用 ErrorCodeToMsg
都需要两条语句而不是一条。有更好的办法吗?
最佳答案
您必须像使用基于字符串的函数一样执行此操作:
void ErrorCodeToMsg(char buffer[], int code){
buffer = myListOfCodes[code];
}
该值将使用其引用值存储在缓冲区中。 Capl 中不可能返回字符串。这就是为什么您无法使用 @
选择器访问字符串系统变量。
关于string - 是否可以定义一个返回文本字符串的 CAPL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932794/