Path: utzoo!attcan!uunet!cs.utexas.edu!uwm.edu!zaphod.mps.ohio-state.edu!brutus.cs.uiuc.edu!ux1.cso.uiuc.edu!mcs.anl.gov!winans From: winans@mcs.anl.gov (John Winans) Newsgroups: comp.lang.c Subject: Re: typedef enum as subset of another enum Keywords: typedef, enum Message-ID: <1990Jun29.223919.3325@mcs.anl.gov> Date: 29 Jun 90 22:39:19 GMT References: <1256@metaphor.Metaphor.COM> Distribution: na Organization: Argonne National Laboratory, Argonne Illinois Lines: 30 In article <1256@metaphor.Metaphor.COM> barry@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@mcs.anl.gov Argonne National Laboratory, Illinois ! ! ! ! If it weren't for time, everything would happen at once. !