Я хочу наложить указатель на одну из двух структур в зависимости от значения переменной. Я пробовал это, но он не работает -C - Визуальный указатель на void для динамической структуры
struct typeA
{
int a;
int x;
}
struct typeB
{
int b;
int a;
int x;
int z;
}
int band=1;
void *ptr;
if(band == 1)
ptr = (struct typeA *)malloc(sizeof(struct typeA));
else if(band == 2)
ptr = (struct typeB *)malloc(sizeof(struct typeB));
printf("A:%d",ptr->a);//error: structure type required instead of void
Какой был бы лучший способ сделать это?
EDIT: Добавлены определения структуры и ошибки (в комментариях кодов), чтобы иметь больше смысла.
В C не нужно вносить листинг. (Также 'ptr'' 'void *') Пожалуйста, объясните, что «не работает». – BLUEPIXY
Я проигнорировал, потому что вы говорите, что ваш код не работает, но вы не говорите, почему, какая ошибка или предупреждение, которое дает вам компилятор. Измените свой вопрос, предоставив эту информацию, и я удалю свой downvote. – nbro
Остановить кастинг 'malloc()', но дать реальный тип 'ptr'. Если на самом деле есть веская причина, чтобы 'ptr' был' void * ', то почему бы просто не выделить более крупные из двух размеров? И, хм, * «это не работает» * - ужасное описание вашей проблемы. Включите сообщение об ошибке! – DigitalRoss