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