Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | pozz <pozzugno@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Structure with unsigned chars and internal alignment |
| Date | 2011-08-31 00:05 +0200 |
| Organization | NGI SpA - http://www.ngi.it/ |
| Message-ID | <j3jmrn$cae$1@nnrp.ngi.it> (permalink) |
I have a struct composed by two arrays of unsigned char.
struct myStruct {
unsigned char field1[2];
unsigned char field2[30];
};
Is myStruct *always* 32 bytes long? Is field2 *always* starting after
two bytes the pointer to myStruct (i.e., no padding is allowed between
field1 and field2)?
In this case, in my application I'd like to read the size of myStruct
(between 3 and 32) from a file. field1 will be always 2-bytes long,
field2 will be the size of myStruct minus 2 bytes of field1 (in the case
no padding is present between field1 and field2).
I could allocate field2 array dynamically, but I haven't malloc/free on
my embedded platform. So I decided to statically allocate the biggest
size (32 bytes, 2 bytes for field1 and 30 bytes for field2).
If the real size of myStruct, read from the configuration file, is
struct_size, how can I deduce the size of field2? Actually I use the
following formula:
field2_size = struct_size - 2
but I don't like it. It would be wrong if I'll decide to change the
size of field1 member, and it would be wrong if padding is present
between the two fields. Maybe the following is better?
field2_size = struct_size - offsetof(struct myStruct, field2)
Do you have other suggestions?
Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread
Structure with unsigned chars and internal alignment pozz <pozzugno@gmail.com> - 2011-08-31 00:05 +0200
Re: Structure with unsigned chars and internal alignment "Scott Fluhrer" <sfluhrer@ix.netcom.com> - 2011-08-30 18:46 -0400
Re: Structure with unsigned chars and internal alignment pozz <pozzugno@gmail.com> - 2011-08-31 08:53 +0200
Re: Structure with unsigned chars and internal alignment James Kuyper <jameskuyper@verizon.net> - 2011-08-31 07:42 -0400
Re: Structure with unsigned chars and internal alignment lawrence.jones@siemens.com - 2011-08-31 12:56 -0400
Re: Structure with unsigned chars and internal alignment Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-30 21:39 -0400
Re: Structure with unsigned chars and internal alignment pozz <pozzugno@gmail.com> - 2011-08-31 09:07 +0200
Re: Structure with unsigned chars and internal alignment Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-31 21:26 -0400
Re: Structure with unsigned chars and internal alignment pozz <pozzugno@gmail.com> - 2011-09-01 07:59 +0200
Re: Structure with unsigned chars and internal alignment "BartC" <bc@freeuk.com> - 2011-09-01 10:34 +0100
Re: Structure with unsigned chars and internal alignment pozz <pozzugno@gmail.com> - 2011-09-01 13:07 +0200
Re: Structure with unsigned chars and internal alignment Keith Thompson <kst-u@mib.org> - 2011-09-01 08:34 -0700
Re: Structure with unsigned chars and internal alignment Keith Thompson <kst-u@mib.org> - 2011-09-01 08:46 -0700
Re: Structure with unsigned chars and internal alignment NicStevens <nic.stevens@gmail.com> - 2011-09-12 12:09 -0700
Re: Structure with unsigned chars and internal alignment "J. J. Farrell" <jjf@bcs.org.uk> - 2011-09-12 20:30 +0100
Re: Structure with unsigned chars and internal alignment James Kuyper <jameskuyper@verizon.net> - 2011-09-12 15:32 -0400
Re: Structure with unsigned chars and internal alignment NicStevens <nic.stevens@gmail.com> - 2011-09-14 13:28 -0700
Re: Structure with unsigned chars and internal alignment "BartC" <bc@freeuk.com> - 2011-08-31 11:50 +0100
Re: Structure with unsigned chars and internal alignment David Resnick <lndresnick@gmail.com> - 2011-08-31 06:31 -0700
csiph-web