В моем коде мне нужно иметь дело с одной из двух структур, которые разделяют почти все элементы, но их смещения могут быть определены только во время выполнения.Что-то вроде:
struct type1 {int a, char b[8], int c};
struct type2 {int a, char b[16], int c};
Я ничего не могу поделать с макетом этих структур, потому что это продиктовано аппаратным обеспечением.
Поэтому каждый раз, когда я хочу получить доступ к члену, мне нужно будет сделатьчто-то вроде:
void foo(void *data)
{
if (is_type1)
((struct type1 *)(data))->c = 5;
else
((struct type2 *)(data))->c = 5;
}
И это не очень элегантно.
Мне было интересно, есть ли какой-нибудь рецепт для более элегантной обработки этой ситуации, помимо сокрытия всего этого уродства в макросах,к этому решению я прибегну в отсутствие лучшего.
Спасибо.