On Thu, Mar 19, 2009 at 06:33:48PM -0600, Alec Shaw wrote: > I want to implement a struct that is 4 bytes in size that has alternate > bit fields > similar to the following. The struct below is 12 bytes in size. > Any suggestions on how create a similar structure of only 4 bytes. > I want to overlay the structure on a character stream.
Note that this is inherently compiler dependent. That said, here's how
you could define that struct for gcc.
#include <stdio.h>
#include <stdint.h>
struct __attribute__ ((__packed__)) mystruct
{
uint8_t a;
union {
struct {
uint8_t one_ba:4;
uint8_t one_bb:4;
} type1b;
struct {
uint8_t two_ba:8;
} type2b;
struct {
uint8_t three_ba:1;
uint8_t three_bb:1;
uint8_t three_bc:1;
uint8_t three_bd:2;
uint8_t three_be:3;
} type3b;
} u;
uint16_t c;
};
int main(int argc, char* argv[])
{
printf("sizeof(struct mystruct) => %lu\n", sizeof(struct mystruct));
return 0;
}
--
Byron Clark
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/
