typedef enum as subset of another enum

John Winans winans at mcs.anl.gov
Sat Jun 30 08:39:19 AEST 1990


In article <1256 at metaphor.Metaphor.COM> barry at lizard.metaphor.com (Barry Friedman) writes:
>Excuse me if I am being an ignoramus but...
>
>I want to create two enumerated types, one being a subset of the
>other, something like this:
>
>typedef enum { a, b, c, d, e } Set;  /* This defines the full set */
>typedef enum { b, c, d } SubSet;     /* This is a subset of above */
>
>I wasn't too surprised when my compiler choked on this. Is there a
>way to do this in C? I have checked a few books and I haven't seen
>anything that hints at a way to do it. Thanks in advance.

My understanding of enumerated types is that (using your example) the a would
be psuedo-#defined to 0, the 'b' to 1, 'c' to 2 and so on.  If your subset had
it's vars in the same position as the set... it would work!!  As in:

typedef enum { b, c, d, a, e } Set;  /* This defines the full set */
typedef enum { b, c, d } SubSet;     /* This is a subset of above */

I have no idea if lint would print nasties about this I never use it :-)  But if
i ever defined an enumerated data type like the above, I most certainly would
doc the thing as ordered for a purpose.


-- 
! John Winans                       Advanced Computing Research Facility  !
! winans at mcs.anl.gov                Argonne National Laboratory, Illinois !
!                                                                         !
! If it weren't for time, everything would happen at once.                !



More information about the Comp.lang.c mailing list