#include <stdio.h>
#include <stdint.h>
#include <stddef.h>

typedef struct {
	uint8_t f1;
	uint32_t f2;
	uint16_t f3;
} example_TypeDef;

void print_st(example_TypeDef *st) {
	printf("%hhu %hu %u \n", st->f1, st->f2, st->f3);
}

int main(void) {
	example_TypeDef a;
	example_TypeDef b;
	uint8_t *a_mem;
	uint8_t *b_mem;
	
	a.f1 = 11;
	a.f2 = 22;
	a.f3 = 44;
	
	b.f1 = 55;
	b.f2 = 66;
	b.f3 = 77;
	
	printf("sizeof: %ld\n", sizeof(example_TypeDef));
	printf("a = "); print_st(&a);
	printf("b = "); print_st(&b);
	
	printf("copy b <- a\n");
	a_mem = (uint8_t *)(&a);
	b_mem = (uint8_t *)(&b);
	for (int i = 0; i < sizeof(example_TypeDef); i++) {
		b_mem[i] = a_mem[i];
	}
	printf("a = "); print_st(&a);
	printf("b = "); print_st(&b);
	
	return 0;
}
