So könnte es klappen:
Code:
typedef struct {
   uint8_t * mode;
   uint8_t msg[4][3];
} mkb_t;

typedef struct{
   mkb_t * mkb[NUMBER_OF_MKB];
   uint8_t adc[NUMBER_OF_ADC][2];
} preset_t;
Also in preset_t ein Array von Zeigern auf mkb_t, und außerdem mode ebenfalls als Zeiger (weil eeprom_write_byte einen uint8_t* als Paramtere will).

Kann gut sein, dass das komplett falsch ist, aber es kompiliert wenigstens...