可能重复:
可以在声明中初始化联合吗?
我浏览了整个互联网,找不到如何在编译时在结构中设置联合值的示例,我希望你们能帮助我。例如,一个简单的结构是:
typedef enum {
typeFloat,
typeInt
} Type;
typedef struct myStruct {
Type elementType;
int valueInt;
float valueFloat;
} myStruct;
然后你可以声明一个局部变量:
myStruct structEx = {typeInt, 349, 0};
或者
myStruct structEx = {typeFloat, 0, 349.349};
如果结构被声明为:你将如何做同样的事情:
typedef struct myStruct {
Type elementType;
union value {
int valueInt;
float valueFloat;
} value;
} myStruct;
“值”将是浮点数或整数,“元素类型”允许它知道它是什么。
我知道你可以在运行时设置它:
myStruct structEx;
structEx.elementType = typeInt;
structEx.value.valueInt = 349;
但我还没有找到一种方法来使用结构进行上述操作。
提前致谢。
编辑:这是重复的。我应该一直使用“初始化”这个词,它会直接带我去那个。我的 Google-Fu 今天一定很弱。谢谢。