typedef enum as subset of another enum
Benjamin Zhu
zhu at crabcake.cs.jhu.edu
Sat Jun 30 09:48:11 AEST 1990
In article <1990Jun29.223919.3325 at mcs.anl.gov> winans at mcs.anl.gov (John Winans) writes:
>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 */
No, this would not work. Check out K&R (pp 39). Names at different
enumeration should be distinct. Please do not take something for
granted just because enumerations are quite similar to #define's.
As to the original posting, do you have absolute necessity to use
the same names in different enumerations at all? I am not aware of
any tricks to do this. I probably would get rid of enumerations and
use macros instead. Again, I am not an authority on this matter.
>
>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. !
Benjamin Zhu
+=========================================================================+
+Disclaimer: +
+ I do not represent Johns Hopkins, Johns Hopkins does not +
+ represent me either. +
+==========================================================================
More information about the Comp.lang.c
mailing list