#include <iostream>
using namespace std;
typedef struct{
int d;
int e;
int f;
}DEF;
typedef struct {
int a;
int b;
DEF c[];
}ABC;
struct NrDlRetrieveJobCfg
{
uint8_t frame;
uint8_t subframe;
uint8_t slot;
uint8_t symbol;
uint8_t isWord0BlockSize;
uint8_t isMbtCurrentIndexValid;
uint8_t padding[10];//16
uint64_t mbtSmemPnbAddr; // MBT buffer start address
uint64_t sizeOfBufEntry; // Size of single MBT ring buffer entry in bytes // 16
uint64_t ecpriPayloadOffset; // Offset of E-CPRI payload start from start of each entry in bytes
uint32_t numOfBufEntry; // Total number of entries in MBT ring buffer //12
uint8_t numRntis;
uint8_t subseqNum[24];
uint16_t rnti[24];
} ;
const uint8_t maxNumOfUnknown = 4;
struct NrDlUnknownSubseq
{
uint8_t num;
uint8_t dspHackFlag;
uint8_t padding[14];
uint16_t rnti[maxNumOfUnknown];
uint8_t subseqId[maxNumOfUnknown];
} ;
// One Ue max payload consist of 9 subseqs
const uint8_t maxNumOfSubseqPerUe = 9;
struct NrDlUeTbSubseqInf
{
uint64_t subseqAddr[maxNumOfSubseqPerUe]; // need the rnti and subseq num
} ;
struct NrDlRetrieveJobRst
{
NrDlUnknownSubseq nrDlUnknownSubseq;
NrDlUeTbSubseqInf nrDlUeTbSubseqInf[16];
bool isVaild;
uint32_t corruptedPacket;
uint32_t receivedPacket;
uint8_t frame;
uint8_t subframe;
uint8_t slot;
uint8_t symbol;
uint8_t numRntis;
uint8_t subseqNum[24];
uint16_t rnti[24];
} ALIGNED16;
int main() {
ABC abc;
// your code goes here
cout << sizeof(abc) << endl << &abc.b<<endl<<abc.c <<endl;
cout << "NrDlRetrieveJobRst = " << sizeof(NrDlRetrieveJobRst) << endl;
return 0;
}