MSC 5.0 bug or ANSI C feature?

MH Cox mhc at arrow.UUCP
Tue Feb 2 11:08:00 AEST 1988


I was re-compiling some of my friends code with my shiney new MSC 5.0
compiler, when I received a peculiar fatal syntax error.  I won't
reproduce all the code exactly, but it went something like this:

	typedef struct
		{
		int some;
		char stuff;
		}
	some_stuff;

	typedef struct
		{
		some_stuff some_stuff;		/* same name, no error */
		some_stuff *p;
		}
	OKAY;

	typedef struct
		{
		some_stuff embedded_struct;
		some_stuff *some_stuff;		/* syntax error! */
		}
	BAD;

I realize using a struct member name that's the same as a data type is not
a very good idea.  But, the above code compiles successfully under
MSC 4.0!?!  Is this an MSC 5.0 bug or a new ANSI feature?  The last time
I read the proposed ANSI standard (many moons ago), the above would be
syntactically correct.

BTW, we compared the code+data sizes of MSC 5.0 vs. MSC 4.0
expecting to see *some* size reduction.  Both compilations used the -Os
space-over-time optimization and -Gs disable-stack-overflow-check
switches (NOTE:  the MSC 4.0 compiler defaults to -Os while the MSC 5.0
defaults to -Ot).  Including some other optimizations (-Oali) made the
MSC 5.0 sizes even larger (as expected).

I think I'm going back to 4.0 ...

-- 
Michael H. Cox
(201) 580-8622



More information about the Comp.lang.c mailing list