现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

如何得知共用体使用的是哪个成员

2018-11-05 14:58 工业·编程 ⁄ 共 585字 ⁄ 字号 暂无评论

下面给出一个解决方案:

首先定义一个枚举类型,用以标识共用体中哪个成员是可用的:

enum widget_tag {count_w, value+w, name_w};

然后再用结构体将共用体和枚举包装起来:

struct WIDGET

{

    enum widget_tag tag;

    union

    {

        long count;

        double value;

        char name[10];

    }data;

}x;

然后,对共用体变量的使用都要涉及两个操作:

既要使用数据成员:

x.data.count = 100;

又定要加上标签:

name_w

之后就可以使用共用体数据了:

void print_w (WIDGET w)

{

    switch(w.tag)

    {

        case count_w:

            printf("count %ld\n", w.data.count);

                break;

        case value_w:

            printf("value %ld\n", w.data.count);

                break;

        case name_w:

            printf("name %ld\n", w.data.count);

                break;

    }

}

给我留言

留言无头像?