Я определил две структуры данных, которые должны оставаться одного и того же размера, чтобы приложение функционировало должным образом. Структура используется для связи между ПК и DSP. Код DSP находится на "C", стороне ПК в C++.
например:
struct inbound_data{
int header[5];
float val1;
float val2;
int trailer[3];
};
struct outbound_data{
int header[5];
int reply1;
int reply2;
float dat1;
float dat2;
int filler[1];
}
позже я сделаю что-то вроде:
int tx_block[sizeof(outbound_data)];
int rx_block[sizeof(inbound_data)];
Эти массивы будут передаваться периферийным устройствам связи для передачи и приема между устройствами.
Из-за того, как работает оборудование, важно, чтобы размер двух структур соответствовал, чтобы буферы были одинакового размера. Это достаточно легко обеспечить с должным вниманием, но иногда через цикл проектирования структуры данных становятся модифицированными. Если вы не очень осторожны и осознаете требование о том, чтобы структуры оставались одного и того же размера (и также отражались в коде на стороне ПК), возникает хаос.
Я хотел бы найти способ компиляции, чтобы код не строился, если одна из структур модифицирована так, что она не соответствует размеру другой структуры.
Возможно ли это как-то в "стандартном" C проверять размеры во время компиляции и терпеть неудачу, если они разные? (Я думаю, что мой компилятор по крайней мере C99, может быть, не 11).