Czy istnieje sposób kontrolowania dopełnienia między elementami struct (włącznie z polem bitowym) w C ++?

Pracuję nad analizowaniem strumienia danych sieciowych, zastanawiam się, czy jest jakikolwiek sposób, aby zmapować strumień danych bezpośrednio do struktury danych.

Na przykład chcę zdefiniować strukturę danych dla protokołu RTP w następujący sposób.

class RTPHeader
{
   int version:2; // The first two bits is version.
   int P:1;  // The next bits is an field P.
   int X:1;
   int CC:4;
   int M:1;
   int PT:7;
   int sequenceNumber;
   int64 timestamp;
   .....
};

I używając tego w ten sposób.

RTPHeader header;
memcpy(&header, steamData, sizeof(header));

Ale ponieważ kompilator C ++ wstawi dopełnienie między elementami, czy istnieje sposób, aby to kontrolować, aby nie dodawać dopełnienia między elementami (w tym członkami pola bitowego)?

To pytanie NIE jest duplikatemJak pozbyć się bajtów dopełnienia między elementami danych struktury ponieważ w moim przykładzie mogą być pola bitowe.

questionAnswers(3)

yourAnswerToTheQuestion