C 在编译时设置union的值
可能重复:C 在编译时设置union的值,c,unions,C,Unions,可能重复: 我在互联网上找遍了,找不到一个如何在编译时在结构中设置联合值的例子,我希望你们能帮我解决这个问题。例如,一个简单的结构是: typedef enum { typeFloat, typeInt } Type; typedef struct myStruct { Type elementType; int valueInt; float valueFloat; } myStruct; 然后你可以声明一个局部
我在互联网上找遍了,找不到一个如何在编译时在结构中设置联合值的例子,我希望你们能帮我解决这个问题。例如,一个简单的结构是:
typedef enum {
typeFloat,
typeInt
} Type;
typedef struct myStruct {
Type elementType;
int valueInt;
float valueFloat;
} myStruct;
然后你可以声明一个局部变量:
myStruct structEx = {typeInt, 349, 0};
或
如果结构声明为:
typedef struct myStruct {
Type elementType;
union value {
int valueInt;
float valueFloat;
} value;
} myStruct;
“value”可以是一个float,也可以是一个int,带有“elementType”,允许它知道它是哪个
我知道您可以在运行时使用以下设置:
myStruct structEx;
structEx.elementType = typeInt;
structEx.value.valueInt = 349;
但是我还没有找到一种方法来实现上面的struct
提前谢谢
编辑:这是重复的。我应该用“初始化”这个词,它会直接把我带到那个词。我今天一定很虚弱。谢谢。那么:
myStruct structEx = {
.elementType = 0,
.value = {
.valueInt = 42
}
};
或许
myStruct structEx = {
.elementType = 0,
.value.valueInt = 42
};
myStruct structEx = {
.elementType = 0,
.value.valueInt = 42
};