Давайте представим, у меня есть 3 различных типов наборов данных в 3-х различных структурах:Пустота указателя на структуру указателя внутри структуры без разыменования его
typedef struct
{
int a;
//...
}DATATYPE1;
typedef struct
{
int a;
//...
}DATATYPE2;
typedef struct
{
int a;
//...
}DATATYPE3;
Затем представьте, я хочу один из тех типов данных, которые будут отнесены к услугам Основная структура, как это:
typedef struct
{
int b;
void* data;
//...
}OBJECT;
Say заявляю OBJECT* abc = malloc(sizeof(OBJECT));
и DATATYPE1* dt1 = malloc(sizeof(DATATYPE1));
есть ли способ, которым я мог бы бросить в коде что-то вроде этого:
abc->data = dt1;
, а затем вызвать:
(abc->data)->a;
без разыменования abc->data
указателя обратно e.g. DATATYPE1* dp = abc->data
, а затем использовать dp->a;
1) Не используйте имена всех прописных букв для чего-либо еще, кроме макросов или enum-констант. 2) Никогда не используйте 'void *' без истинной необходимости. Введите безопасный код! 3) Как компилятор должен знать, к какому типу ваш 'void * 'указывает без приведения? 4) Какова ваша ** актуальная проблема, которую вы пытаетесь решить? – Olaf
Вот в чем дело, я не знаю. Но есть ли способ, который он мог бы работать так близко? – Primemaster
Может? Может быть (если бы вы могли прояснить пункт 4). Фактический вопрос: ** если вы **?На что легче ответить: ** НЕТ! ** – Olaf