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

Sar*_*eth 4 c types

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

joh*_*ash 8

将void指针传递给要返回的数据类型.

void foo(char* szType, void *pOut) {
  switch (szType[0]) {
    case 'I': *(int*)pOut = 1; break;
    case 'F': *(float*)pOut = 1; break;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用这样:

int a;
float b;
foo("I", &a);
foo("F", &b);
Run Code Online (Sandbox Code Playgroud)