【发布时间】:2021-12-15 17:26:56
【问题描述】:
假设这段代码
typedef struct A {
...
} A;
typedef struct B {
...
} B;
// If it was TypeScript I would say `type uknown = A | B;`
uknown getAorB(int k) {
if (k > 0) return (A){...};
return (B){...};
}
该函数getAorB 应根据参数k 返回A 或B。好的,但是返回类型是什么,是否可以在 C 中实现?
【问题讨论】:
-
调用函数如何知道返回了什么?
-
可能是联合类型?
-
编写两个函数,让调用者根据
k传递的内容决定调用哪个。 -
这应该解决的实际潜在问题是什么?为什么你需要一个函数来根据某个变量返回不同的类型?现在这非常像XY problem。请直接询问实际和潜在的问题,也许将此作为您考虑过的可能解决方案。
-
在 C 中,这没有什么意义(如果可能的话——但事实并非如此),因为您需要以某种方式使用返回的值,例如通过存储在变量中。但是变量会是什么类型呢?