#include <stdio.h>
typedef enum {
TYPE_INT,
TYPE_CHAR,
TYPE_FLOAT,
TYPE_STRING
} ValueType;
typedef union {
int i;
char c;
float f;
char *s;
} Variable;
void AcceptAnyType(Variable v, ValueType t) {
switch (t) {
case TYPE_INT:
printf("int: %d\n", v.i);
break;
case TYPE_CHAR:
printf("char: %c\n", v.c);
break;
case TYPE_FLOAT:
printf("float: %f\n", v.f);
break;
case TYPE_STRING:
printf("string: %s\n", v.s);
break;
default:
printf("Unknown type\n");
}
}
int main() {
Variable var;
var.i = 35681;
AcceptAnyType(var, TYPE_INT);
var.c = 'a';
AcceptAnyType(var, TYPE_CHAR);
var.f = 3.14f;
AcceptAnyType(var, TYPE_FLOAT);
var.s = "ABCD";
AcceptAnyType(var, TYPE_STRING);
return 0;
}
/*
run:
int: 35681
char: a
float: 3.140000
string: ABCD
*/