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