写了联合体演示程序
This commit is contained in:
parent
62f0b69744
commit
b6a04b612b
|
@ -0,0 +1,4 @@
|
|||
CFLAGS=-Wall -g
|
||||
|
||||
clean:
|
||||
rm -f ex35
|
38
ex35/ex35.c
38
ex35/ex35.c
|
@ -17,4 +17,42 @@ struct Variant {
|
|||
|
||||
typedef struct Variant Variant;
|
||||
|
||||
void Variant_print(Variant *var)
|
||||
{
|
||||
switch (var -> type)
|
||||
{
|
||||
case TYPE_INT:
|
||||
printf("INT: %d\n", var -> data.as_integer);
|
||||
break;
|
||||
case TYPE_FLOAT:
|
||||
printf("FLOAT: %f\n", var -> data.as_float);
|
||||
break;
|
||||
case TYPE_STRING:
|
||||
printf("STRING: %s\n", var -> data.as_string);
|
||||
break;
|
||||
default:
|
||||
printf("UNKNOWN TYPE: %d", var -> type);
|
||||
}
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
Variant a_int = {.type = TYPE_INT, .data.as_integer = 100};
|
||||
Variant a_float = {.type = TYPE_FLOAT, .data.as_float = 100.34};
|
||||
Variant a_string = {.type = TYPE_STRING, .data.as_string = "YO DUDE!"};
|
||||
|
||||
Variant_print(&a_int);
|
||||
Variant_print(&a_float);
|
||||
Variant_print(&a_string);
|
||||
|
||||
// here's how you access them
|
||||
a_int.data.as_integer = 200;
|
||||
a_float.data.as_float = 2.345;
|
||||
a_string.data.as_string = "Hi there.";
|
||||
|
||||
Variant_print(&a_int);
|
||||
Variant_print(&a_float);
|
||||
Variant_print(&a_string);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue