我可以让C函数返回任意类型吗?

时间:2014-06-16 17:41:58

标签: c types

我编写了一个解释串行数据(CAN)的函数,当前返回一个浮点数。我希望函数包含一个参数,其中用户在字符串中指定返回类型,并且该函数返回该类型的值。这是一个方便的事情,避免必须编写几乎共享所有相同代码的多个函数。

2 个答案:

答案 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()