利用结构体、共用体和枚举实现变体(variant),支持基本数据类型
时间: 2024-05-08 08:19:08 浏览: 140
好的,这是一个使用结构体、共用体和枚举实现变体的代码示例:
```
typedef enum {
INT,
FLOAT,
STR
} TYPE;
typedef struct {
TYPE type;
union {
int intValue;
float floatValue;
char strValue[100];
} value;
} VARIANT;
// 赋值函数
void setValue(VARIANT* var, TYPE type, void* value) {
var->type = type;
switch(type) {
case INT:
var->value.intValue = *(int*)value;
break;
case FLOAT:
var->value.floatValue = *(float*)value;
break;
case STR:
strcpy(var->value.strValue, (char*)value);
break;
}
}
// 打印函数
void printValue(VARIANT var) {
switch(var.type) {
case INT:
printf("%d\n", var.value.intValue);
break;
case FLOAT:
printf("%f\n", var.value.floatValue);
break;
case STR:
printf("%s\n", var.value.strValue);
break;
}
}
```
使用示例:
```
int main() {
VARIANT var;
int intValue = 10;
setValue(&var, INT, &intValue);
printValue(var);
float floatValue = 3.14;
setValue(&var, FLOAT, &floatValue);
printValue(var);
char strValue[100] = "Hello, world!";
setValue(&var, STR, &strValue);
printValue(var);
return 0;
}
```
输出结果:
```
10
3.140000
Hello, world!
```
希望这个例子对您有所帮助!
阅读全文