我看过整个互联网,无法找到如何在编译时在结构中设置联合值的示例,我希望你们和gals可以帮助我。例如,一个简单的结构将是:
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;
“value”将是一个float或一个带有“elementType”的int,允许它知道它是什么。
我知道您可以在运行时使用以下命令设置它:
myStruct structEx;
structEx.elementType = typeInt;
structEx.value.valueInt = 349;
但我还没有找到一种方法来执行上面的结构。
提前致谢。
编辑:这是重复的。我应该一直使用“初始化”这个词,它会直接带我去那个。我的Google-Fu今天一定很弱。感谢。
答案 0 :(得分:3)
怎么样:
myStruct structEx = {
.elementType = 0,
.value = {
.valueInt = 42
}
};
或者
myStruct structEx = {
.elementType = 0,
.value.valueInt = 42
};