Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在编译时设置union的值_C_Unions - Fatal编程技术网

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
};