在 C 中 return 联合的有效方法?
Efficient way to return a union in C?
我有一个 return 是联合的函数,调用者知道如何处理它。 return 联合是否有有效的单行方式?我现在做什么:
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" 行。有什么想法吗?
你可以使用 C99 的 designated initializers and compound literals:
return (FunnyResponse){ .d = 12.34 };
对于 ANSI C89(Microsoft 的 C 编译器),您必须按照现在的操作来获得相同的效果。
我有一个 return 是联合的函数,调用者知道如何处理它。 return 联合是否有有效的单行方式?我现在做什么:
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" 行。有什么想法吗?
你可以使用 C99 的 designated initializers and compound literals:
return (FunnyResponse){ .d = 12.34 };
对于 ANSI C89(Microsoft 的 C 编译器),您必须按照现在的操作来获得相同的效果。