delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2003/01/08/12:15:20

From: "Joel Saunders" <jbs30000 AT aol DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Problem using a struct
Date: Wed, 8 Jan 2003 15:58:30 +0000 (UTC)
Organization: Mailgate.ORG Server - http://www.Mailgate.ORG
Lines: 49
Message-ID: <bcd4cba120fadbd18cb606881c88ae87.62691@mygate.mailgate.org>
NNTP-Posting-Host: cache-ntc-ad01.proxy.aol.com
X-Trace: news.mailgate.org 1042039485 26261 198.81.26.102 (Wed Jan 8 16:58:29 2003)
X-Complaints-To: abuse AT mailgate DOT org
NNTP-Posting-Date: Wed, 8 Jan 2003 15:58:30 +0000 (UTC)
Injector-Info: news.mailgate.org; posting-host=cache-ntc-ad01.proxy.aol.com; posting-account=62691; posting-date=1042039485
User-Agent: Mailgate Web Server
X-URL: http://mygate.mailgate.org/mynews/comp/comp.os.msdos.djgpp/bcd4cba120fadbd18cb606881c88ae87.62691%40mygate.mailgate.org
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I made a post about this yesterday, but it never showed up, so I'll try
again, and hope it posts this time.
For a basic bmp loader I made, the struct to hold the bmp header doesn't
work.  I used __attribute__((__packed__)) after each item, but it's no
good.  I gave the file for the program, a C extention, instead of a cpp
extention, so I know that probably makes some difference.
Here's the header...
struct BMP_Header {
        unsigned int BM __attribute__((__packed__));
        unsigned long File_Size __attribute__((__packed__));
        unsigned int R_1 __attribute__((__packed__)); // Reserved 1
        unsigned int R_2 __attribute__((__packed__)); // Reserved 2
        unsigned long BMP_Offset __attribute__((__packed__));
        unsigned long Header_Info __attribute__((__packed__));
        unsigned long BMP_Width __attribute__((__packed__));
        unsigned long BMP_Height __attribute__((__packed__));
        unsigned int BMP_Planes __attribute__((__packed__));
        unsigned int BPP __attribute__((__packed__));
        unsigned long Compression __attribute__((__packed__));
        unsigned long BMP_Size __attribute__((__packed__));
        unsigned long Width_PPM __attribute__((__packed__));
        unsigned long Height_PPM __attribute__((__packed__));
        unsigned long Num_of_Colors __attribute__((__packed__));
        unsigned long Important_Colors __attribute__((__packed__));
}image;
Here's what I had to use instead of the header:
unsigned char image[54];
#define image_BM ((int *)&image[0])[0]
#define image_File_Size ((long *)&image[2])[0]
#define image_R_1 ((int *)&image[6])[0]
#define image_R_2 ((int *)&image[8])[0]
#define image_BMP_Offset ((long *)&image[10])[0]
#define image_Header_Info ((long *)&image[14])[0]
#define image_BMP_Width ((long *)&image[18])[0]
#define image_BMP_Height ((long *)&image[22])[0]
#define image_BMP_Planes ((int *)&image[26])[0]
#define image_BPP ((int *)&image[28])[0]
#define image_Compression ((long *)&image[30])[0]
#define image_BMP_Size ((long *)&image[34])[0]
#define image_Width_PPM ((long *)&image[38])[0]
#define image_Height_PPM ((long *)&image[42])[0]
#define image_Num_of_Colors ((long *)&image[46])[0]
#define image_Important_Colors ((long *)&image[50])[0]
What can I do to make the struct work?  All help is appreciated.
Thanks.


-- 
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019