Path: utzoo!mnetor!uunet!lll-winken!lll-tis!oodis01!uplherc!sp7040!obie!wes From: wes@obie.UUCP (Barnacle Wes) Newsgroups: comp.lang.c Subject: Re: Question about use of enum in typedef and struct Message-ID: <212@obie.UUCP> Date: 2 May 88 00:09:48 GMT References: <823@uvm-gen.UUCP> Organization: Great Salt Lake Yacht Club, north branch Lines: 51 Keywords: enum, typedef, struct, syntax Summary: Your enum syntax is all messed up! In article <823@uvm-gen.UUCP>, cavrak@uvm-gen.UUCP (Steve Cavrak) writes: | Can someone explain why the following uses (abuses?) of typdef and enum | |a) typedef int s_state_ok; /* OK */ |b) typedef enum s_state_ok { | initial_ok, middle_ok, final_ok | }; | |c) typedef int s_state_to; /* OK */ |d) enum s_state_to { | initial_to, middle_to, final_to | }; | |e) typedef enum s_state_no { /* NOT OK */ | initial_no, middle_no, final_no | }; Your problem lies mainly with your typedef and enum syntax. Remember that the name following the keyword `enum' is an _enumeration type tag_ (like a structure tag), not a variable declaration. The syntax for typedef is to write the keyword typedef, followed by a valid C variable declaration. The name that would normally become the variable becomes the new type name. The enum statement looks like: enum enum_type_tag { element, [elements...] } variable; The typedef statement looks like: type valid_c_variable_declaration; where the variable becomes the new type name. What your code above is actually doing is declaring: a) a new type, s_state_ok, which is int. b) a new enumeration type, which is called s_state_ok (but no variables of this type are declared). c) a new type, s_state_to, which is int. d) a new enumeration type, which is called s_state_to (again no variables of this type are declared). e) a non-working typedef - no variable was included in the 'enum...' statement, so no type name could be found. I think what you may want is: typedef enum { initial_ok, middle_ok, final_ok } s_state_ok ; typedef enum { initial_to, middle_to, final_to } s_state_to ; typedef enum { initial_no, middle_no, final_no } s_state_no ; -- /\ - "Against Stupidity, - {backbones}! /\/\ . /\ - The Gods Themselves - utah-cs!uplherc! / \/ \/\/ \ - Contend in Vain." - sp7040!obie! / U i n T e c h \ - Schiller - wes