c - 在编译时设置 union 的值

标签 c unions

<分区>

Possible Duplicate:
Can a union be initialized in the declaration?

我在整个 Internet 上都看过了,但找不到有关如何在编译时在结构中设置 union 值的示例,我希望你们能帮助我。例如,一个简单的结构是:

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;

“值”将是 float 或整数,“元素类型”允许它知道它是哪个。

我知道你可以在运行时设置它:

myStruct structEx;
structEx.elementType = typeInt;
structEx.value.valueInt = 349;

但我还没有找到一种方法可以像上面那样用结构体来完成。

提前致谢。

编辑:这是重复的。我应该一直使用“初始化”这个词,它会把我直接带到那个。今天我的谷歌一定很虚弱。谢谢。

最佳答案

怎么样:

myStruct structEx = {
    .elementType = 0,
    .value = {
        .valueInt = 42
    }
};

或者也许

myStruct structEx = {
    .elementType = 0,
    .value.valueInt = 42
};

关于c - 在编译时设置 union 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333964/

相关文章:

c - 如何找到固定 n 的前 r 个二项式系数之和?

c - 为什么左移操作不起作用

c - union 和结构中的偏移量

c++ - 在 cpp 中使用 union 的未定义行为?

java - 跨编程语言的动态内存分配

c - NetBeans 6.8 for C 无法识别 'bool'(C/C++ 菜鸟)

c - 帮助将指针强制转换为 union

c++ - Actor 和 union 一样安全吗?

c - 获取持续时间

c - C 中的结构和 union ,确定大小和访问成员