Newsgroups: comp.std.c
Path: utzoo!henry
From: henry@zoo.toronto.edu (Henry Spencer)
Subject: Re: How soon can `sizeof (tagged_type)' be used?
Message-ID: <1991May13.175830.7143@zoo.toronto.edu>
Date: Mon, 13 May 1991 17:58:30 GMT
References: <5506@lupine.NCD.COM>
Organization: U of Toronto Zoology

In article <5506@lupine.NCD.COM> rfg@lupine.ncd.com (Ron Guilmette) writes:
>Are either or both of these examples legal?
>
>enum E { red, green = sizeof (enum E), blue };
>struct S { int i; int j : sizeof (struct S); int k; };

I think neither.

In the first one, the argument of sizeof is meaningless, because E is not
declared until the end of the brace-enclosed list.  Enums, unlike structs
and unions, cannot be incomplete types.

In the second example, the struct type is incomplete until the
closing brace.  ANSI C is rather vague about where incomplete types can
be used, saying only "when the size of an object of the specified type
is not needed", with no explanation of what that *means*, but sizeof is
the one clear situation.
-- 
And the bean-counter replied,           | Henry Spencer @ U of Toronto Zoology
"beans are more important".             |  henry@zoo.toronto.edu  utzoo!henry
