我编写了一个解释串行数据(CAN)的函数,当前返回一个浮点数。我希望函数包含一个参数,其中用户在字符串中指定返回类型,并且该函数返回该类型的值。这是一个方便的事情,避免必须编写几乎共享所有相同代码的多个函数。
答案 0 :(得分:8)
将void指针传递给您想要返回的数据类型。
void foo(char* szType, void *pOut) {
switch (szType[0]) {
case 'I': *(int*)pOut = 1; break;
case 'F': *(float*)pOut = 1; break;
}
}
像这样使用:
int a;
float b;
foo("I", &a);
foo("F", &b);
答案 1 :(得分:1)
johnnycrash的答案是正确的,但是如果你想返回特定类型的对象(而不是使用call-with-parameter-equal-equal {{},那么还有另外一种方法。 1}}指针)。这可以通过返回所请求类型的void *
&n;对象来实现。
malloc()