github.com/fananchong/cstruct-go@v0.0.0-20220616060855-b65d9a2f2e17/example/main.cpp (about)

     1  #include <string>
     2  
     3  #pragma pack(1)
     4  
     5  struct StructA {
     6  	uint8_t A1;
     7  	uint32_t A2;
     8  	uint8_t A3[5];
     9  };
    10  
    11  
    12  struct StructB {
    13  	uint8_t B1;
    14  	StructA B2;
    15  	uint16_t B3;
    16  	float B4;
    17  	StructA B5[3];
    18  };
    19  
    20  int main()
    21  {
    22  	StructB b;
    23  	b.B1 = 127;
    24  	b.B2.A1 = 56;
    25  	b.B2.A2 = 999;
    26  	b.B2.A3[0] = 0;
    27  	b.B2.A3[1] = 1;
    28  	b.B2.A3[2] = 2;
    29  	b.B2.A3[3] = 3;
    30  	b.B2.A3[4] = 4;
    31  	b.B3 = 8888;
    32  	b.B4 = 88.8f;
    33  	b.B5[0] = b.B2;
    34  	b.B5[1] = b.B2;
    35  	b.B5[2] = b.B2;
    36  
    37  	printf("len(b) = %llu\n", sizeof(b));
    38  	printf("struct data len = %llu\n", sizeof(b));
    39  	printf("struct data is:\n");
    40  
    41  	unsigned char buff[1024];
    42  	memcpy(buff, &b, sizeof(b));
    43  	for (int i = 0; i < sizeof(b); i++) {
    44  		printf("%d ", buff[i]);
    45  	}
    46  	return 0;
    47  }