Skip to content
Snippets Groups Projects
Select Git revision
  • 08256e681ca958282c556749d6332bf473cf4251
  • master default
2 results

maerchen.c

Blame
  • Forked from Peter Gerwinski / hp
    Source project has a limited visibility.
    loesung-2d-2.c 925 B
    #include <stdio.h>
    
    #define ANIMAL     0
    #define WITH_WINGS 1
    #define WITH_LEGS  2
    
    typedef struct animal
    {
      int type;
      char *name;
    } animal;
    
    typedef struct with_wings
    {
      int type;
      char *name;
      int wings;
    } with_wings;
    
    typedef struct with_legs
    {
      int type;
      char *name;
      int legs;
    } with_legs;
    
    int main (void)
    {
      animal *a[2];
    
      with_wings duck;
      a[0] = (animal *) &duck;
      duck.type = WITH_WINGS;
      duck.name = "duck";
      duck.wings = 2;
    
      with_legs cow;
      a[1] = (animal *) &cow;
      cow.type = WITH_LEGS;
      cow.name = "cow";
      cow.legs = 4;
    
      for (int i = 0; i < 2; i++)
        if (a[i]->type == WITH_LEGS)
          printf ("A %s has %d legs.\n", a[i]->name,
                  ((with_legs *) a[i])-> legs);
        else if (a[i]->type == WITH_WINGS)
          printf ("A %s has %d wings.\n", a[i]->name,
                  ((with_wings *) a[i])-> wings);
        else
          printf ("Error in animal: %s\n", a[i]->name);
    
      return 0;
    }