Re: mutually referential (Pg 140 K&R2)
- From: Russell Shaw <rjshawN_o@xxxxxxxxxxxxxxxxxxxxx>
- Date: Sat, 23 Apr 2005 15:23:02 +1000
G Patel wrote:
Pg. 140 of K&R2 shows an example of mutually referential structure declarations...
struct t { struct s *p; };
struct s { struct t *q; };
I ran the following test program through my C compiler to see if it would compile:
#include <stdlib.h>
struct t { struct s *p; /* type 'struct s' is not visible here */ };
struct s { struct t *q; };
int main() { printf("Hello world\n"); return 0; }
It compiled and ran without any noticeable problems. I expected it to complain about the line I've commented above.
How is this valid when the type 'struct s' is not in scope when *p is declared as a member of the type struct t?
If this is 'valid' please tell me why scopes don't apply here. If this is 'not valid' please tell me how I can declare mutually referential struct types.
struct s *p declares p using an incomplete struct s type, which is later completed with struct s {...}. Incomplete types apply only to curly bracket things like enums, unions, and structs iirc. .
- References:
- mutually referential (Pg 140 K&R2)
- From: G Patel
- mutually referential (Pg 140 K&R2)
- Prev by Date: Re: How is strlen implemented?
- Next by Date: Re: mutually referential (Pg 140 K&R2)
- Previous by thread: Re: mutually referential (Pg 140 K&R2)
- Next by thread: Re: mutually referential (Pg 140 K&R2)
- Index(es):
Relevant Pages
|