From: Shawn Hargreaves Newsgroups: comp.os.msdos.djgpp Subject: Re: Type casting problems with gcc Date: Sun, 2 Mar 1997 10:39:19 +0000 Organization: None Distribution: world Message-ID: <97O8JIAXjVGzEwwo@talula.demon.co.uk> References: <5f9trv$e6t AT crl9 DOT crl DOT com> NNTP-Posting-Host: talula.demon.co.uk MIME-Version: 1.0 Lines: 27 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Samuel McGrath writes: >I'm using the Allegro graphics library right now, and I'm trying to >reference the w and h fields of the BITMAP structure like this: > >void* bmp = create_bitmap(320,200); >int bitmapwidth = (BITMAP*)(bmp)->w; Why do you need to declare this as a void pointer? If you declared: BITMAP *bmp = create_bitmap(320,200); int bitmapwidth = bmp->w; it would be quite a bit simpler :-) If you really do need the void pointer for some reason, the problem is that your brackets are in the wrong place. You're looking up bmp->w, and then casting that to a bitmap pointer, while you want to do the cast before referencing the structure member. Instead, try: ((BITMAP *)bmp)->w; /* * Shawn Hargreaves - shawn AT talula DOT demon DOT co DOT uk - http://www.talula.demon.co.uk/ * Beauty is a French phonetic corruption of a short cloth neck ornament. */