#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义枚举类型来表示值的类型
typedef enum {
TYPE_INT,
TYPE_FLOAT,
TYPE_STRING
} VariantType;
// 定义共用体来存储不同类型的值
typedef union {
int int_value;
float float_value;
char *string_value;
} VariantValue;
// 定义变体结构体
typedef struct {
VariantType type;
VariantValue value;
} Variant;
// 函数用于初始化整数类型的变体
void init_variant_int(Variant *variant, int value) {
variant->type = TYPE_INT;
variant->value.int_value = value;
}
// 函数用于初始化浮点数类型的变体
void init_variant_float(Variant *variant, float value) {
variant->type = TYPE_FLOAT;
variant->value.float_value = value;
}
// 函数用于初始化字符串类型的变体
void init_variant_string(Variant *variant, const char *value) {
variant->type = TYPE_STRING;
variant->value.string_value = strdup(value);
}
// 函数用于打印变体的值
void print_variant(const Variant *variant) {
switch (variant->type) {
case TYPE_INT:
printf("Integer: %d\n", variant->value.int_value);
break;
case TYPE_FLOAT:
printf("Float: %.2f\n", variant->value.float_value);
break;
case TYPE_STRING:
printf("String: %s\n", variant->value.string_value);
break;
default:
printf("Unknown type\n");
}
}
// 函数用于释放变体的内存
void free_variant(Variant *variant) {
if (variant->type == TYPE_STRING) {
free(variant->value.string_value);
}
}
int main() {
Variant var1, var2, var3;
// 初始化不同类型的变体
init_variant_int(&var1, 42);
init_variant_float(&var2, 3.14f);
init_variant_string(&var3, "Hello, World!");
// 打印变体的值
print_variant(&var1);
print_variant(&var2);
print_variant(&var3);
// 释放字符串类型变体的内存
free_variant(&var3);
return 0;
}
枚举类型和共用体 实现 变体
最新推荐文章于 2025-12-28 07:10:27 发布
316

被折叠的 条评论
为什么被折叠?



