我有这样的代码无法设置工会值
union u_value {
int i_value;
long l_value;
float f_value;
double d_value;
char *cp_value;
int type;
};
union u_value create_int_value(int value) {
union u_value val;
val.i_value = value;
val.type = INT;
printf("Inside: %d, %d\n", value, val.i_value);
return val;
}
的问题是,我不能设置内部工会值。
例如:
union u_value val = create_int_value(123);
printf("%d\n", val.i_value);
将打印0
我在做什么错?
'type'本身就是工会的成员。设置它将覆盖以前设置的任何值。如果你试图实现一个带标签的联合,你将需要一个'struct',其中一个成员是一个联合,**另一个单独的成员**是类型标签。 – 2014-10-29 11:39:06
@ TheParamagneticCroissant我不知道。谢谢!现在感觉很愚蠢 – ivknv 2014-10-29 11:41:21
好吧,你不必*知道*任何特别的东西。为什么'type'字段是特殊的?它只是工会的另一个成员。它与所有其他成员共享存储空间。你需要**了解**工会是什么...... – 2014-10-29 11:42:08