Yes, you can create unnamed fields within a struct using "bit fields":
struct my_peri {
uint32_t CTL;
uint32_t STAT;
uint32_t TXR;
uint32_t : 32;
uint32_t RXR;
uint32_t : 32;
uint32_t : 32;
uint32_t : 32;
uint32_t DAT1;
uint32_t : 32;
uint32_t : 32;
uint32_t : 32;
uint32_t DAT2;
};
Unfortunately there's no array syntax; you can collapse pairs of :32
to :64
if you want by changing the type to uint64_t.
An alternative, if your fields are all the same type as in this example, would be to treat the whole thing as an array of integers and index into it using an enum { CTL = 0, STAT = 1, TXR = 2, RXR = 4, ... }
.