我有一个返回联合的函数,调用者知道该联合如何处理。有没有一种有效的一线退还工会的方法?我现在应该做什么:

typedef union { int i; char *s; double d; } FunnyResponse;
FunnyResponse myFunc () {
    // Tedious:
   FunnyResponse resp;
   resp.d = 12.34;
   return resp;
}
int main () {
   printf ("It's this: %g\n", myFunc().d);
}

这会编译并运行,但是如果可能的话,我希望有一条“返回”行。有任何想法吗?

最佳答案

您可以使用C99的designated initializerscompound literals:

return (FunnyResponse){ .d = 12.34 };

对于ANSI C89(Microsoft的C编译器),您必须做现在要做的事情才能获得相同的效果。

关于c - 在C中返回 union 的有效方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58226914/

10-11 05:47