rudy@alias.UUCP (Rudy Wortel) (12/12/89)
Consider the following C fragment: /********************************/ typedef int definedtype; float definedtype[ 13 ]; typedef struct { float definedtype[ 13 ]; } foo; typedef struct { float int[ 13 ]; } bar; /********************************/ When i compiled this the compiler had this to say: cc -O -c frag.c ccom: Error: frag.c, line 3: illegal type combination float definedtype[ 13 ]; ---------------------^ ccom: Error: frag.c, line 3: syntax error float definedtype[ 13 ]; ---------------------^ ccom: Error: frag.c, line 10: illegal type combination float int[ 13 ]; -------------^ ccom: Error: frag.c, line 10: syntax error float int[ 13 ]; -------------^ ccom: Error: frag.c, line 11: zero sized structure } bar; ^ My question is why does the compiler treat the the declarations with 'definedtype' differently when it is inside the structure definition? If the use of 'definedtype[ 13 ]' is ok inside the structure then why is the similar use of 'int[ 13 ]' not allowed? The reason i am asking these apparently silly questions is that wrote a C parser a while ago and could not get it to deal with the situation as described above. It dealt with the two structure definitions similarly by flagging syntax errors for both of them. i recently obtained an ansi C grammar as advertized over the net ie: uunet.uu.net:~ftp/net.sources/ansi.c.grammar.Z Thinking that it would deal with this problem and i could see what a dummy i have been. But, it too does not allow the use of 'definedtype[ 13 ]' in either definition. So, how does the compiler do it??? i have been using the compiler on SGI 4Ds and 3000s, suns and a celerity which all complain similarly. For my CND$0.02 worth i consider any use of a type name, be it int or a typedefed name, other than where a type is required, bad coding style etc.:-( And not only that, i wouldn't do it even if i could get my parser to handle it :-). Since some of the code that i want to parse has this awfull stuff in it any pointers as to how to deal with this would be appreciated. Thanks for reading this far. ------------------------------------------------------------------------------- Rudy Wortel O o O o O o O oo oOoo ooOOoOoooo Alias Research Inc., o O OOo O ooOO OOo ooOOOOo 110 Richmond St. E., o O Toronto Ontario, _[#]_t____ ___xxxx ===__m_n__n__H_ Canada. M5C 1P1 :_|>)____|_:_(___[__]_[#]____________P rudy%alias@utcsri.utoronto.ca ___________o-o o-o ooo ooo o-o O-O-O-O o-o\