在C语言中高效返回联合体的方法是什么?

4

我有一个返回联合类型的函数,调用者知道如何处理。有没有一种高效的一行代码方式返回联合类型?我现在所做的是:

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);
}

这段代码可以编译和运行,但如果可能的话,我想只有一个单独的 "return" 行。有什么建议吗?

3
你是在问如何初始化一个union吗?我并没有看到任何繁琐的地方。你需要给所有需要赋值的字段进行赋值,可以一行或者一百行来完成。 - Eugene Sh.
1个回答

8
您可以使用C99的指定初始化器和复合字面量:

(您可以使用C99的指定初始化器复合字面量:)

return (FunnyResponse){ .d = 12.34 };

对于ANSI C89(微软的C编译器),您将不得不像现在这样做才能获得相同的效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接