不使用结构体继承依赖的 typedef
创始人
2024-12-28 21:30:41
0

在C语言中,可以使用联合体(union)来替代结构体的继承依赖的 typedef。下面是一个示例代码:

#include 

// 定义基本类型
typedef enum {
    TYPE_INT,
    TYPE_FLOAT,
    TYPE_STRING
} DataType;

// 定义联合体
typedef union {
    int intValue;
    float floatValue;
    char* stringValue;
} Value;

// 定义数据结构
typedef struct {
    DataType type;
    Value value;
} Data;

// 打印数据
void printData(Data data) {
    switch (data.type) {
        case TYPE_INT:
            printf("Integer: %d\n", data.value.intValue);
            break;
        case TYPE_FLOAT:
            printf("Float: %.2f\n", data.value.floatValue);
            break;
        case TYPE_STRING:
            printf("String: %s\n", data.value.stringValue);
            break;
    }
}

int main() {
    // 创建数据对象
    Data data1 = {TYPE_INT, {123}};
    Data data2 = {TYPE_FLOAT, {3.14}};
    Data data3 = {TYPE_STRING, {"Hello, world!"}};

    // 打印数据
    printData(data1);
    printData(data2);
    printData(data3);

    return 0;
}

在上述代码中,定义了一个枚举类型 DataType,用于标识数据的类型。然后,使用联合体 Value 定义了 int、float 和 char* 三种不同类型的值,并将其作为结构体 Data 的成员。通过联合体的特性,结构体 Data 可以存储不同类型的值。最后,定义了一个打印函数 printData,根据数据类型打印相应的值。

在主函数中,创建了三个不同类型的数据对象,并通过 printData 函数打印出了它们的值。

注意:使用联合体需要特别小心,因为联合体会共享内存空间,因此在使用时需要确保访问的类型和值是正确的,否则可能会导致数据错误。

相关内容

热门资讯

科普攻略!德普之星辅助器app... 科普攻略!德普之星辅助器app,we poker辅助器,德州论坛(有挂软件)是一款可以让一直输的玩家...
重大科普!佛手在线大菠萝智能辅... 重大科普!佛手在线大菠萝智能辅助器,wepoker作弊辅助,分享教程(有挂软件);原来确实真的有挂(...
一分钟教会你!wepoker怎... 一分钟教会你!wepoker怎么增加运气,epoker透视,切实教程(有挂透视)1、点击下载安装,微...
六分钟了解!hhpoker有辅... 六分钟了解!hhpoker有辅助吗,wepoker国外版透视,扑克教程(有挂技巧)科技教程也叫必备教...
我来教大家!wepoker辅助... 我来教大家!wepoker辅助透视,wepoker免费脚本弱密码,详细教程(有挂透明);wepoke...
记者发布!wpk辅助,德普之星... 记者发布!wpk辅助,德普之星透视辅助软件激活码,解密教程(有挂辅助);亲真的是有正版授权,小编(透...
揭秘攻略!aapoker万能辅... 《揭秘攻略!aapoker万能辅助器,hhpoker真的假的,揭秘教程(有挂教程)》 aapoker...
重大通报!sohoo poke... 自定义sohoo poker辅助器系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用...
三分钟了解!wpk辅助器,hh... 1、三分钟了解!wpk辅助器,hhpoker免费辅助器,必赢教程(有挂神器);详细教程。2、hhpo...
玩家必看攻略!wejoker私... 玩家必看攻略!wejoker私人辅助软件,智星德州可以透视吗,透明挂教程(有挂技巧)关于智星德州可以...