繁体   English   中英

在 C 中返回联合的有效方法?

[英]Efficient way to return a union in C?

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

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 的 指定初始值设定项和复合文字

return (FunnyResponse){ .d = 12.34 };

对于 ANSI C89(Microsoft 的 C 编译器),您必须执行您现在正在执行的操作才能获得相同的效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM