Это структура, которая будет содержать другую (переменную) структуру:
typedef struct {
char * mem_addr;
char * name;
int option;
void * struct_pointer;
} Handle;
Я не знаю, что это будет за структура, так как я хочу иметь выбор структур, доступных для вложения, и позже приведите к правильному типу по мере необходимости. Примером может быть:
typedef struct{
char * policy;
int size;
char * addr;
} PS_call_struct;
Я инициализирую эти структуры с помощью этой функции:
threadHandle * createHandle(char * mem_addr, char * name, int option, void * struct_pointer){
threadHandle * new = malloc(sizeof(threadHandle));
new->mem_addr = malloc(strlen(mem_addr)+1);
strcpy(new->mem_addr,mem_addr);
new->name = malloc(strlen(name)+1);
strcpy(new->name,name);
new->option = malloc(sizeof(int));
new->option = option;
new->struct_pointer = malloc(strlen(struct_pointer)+1);
strcpy(new->struct_pointer,struct_pointer);
return new;
}
, а эта:
PS_call_struct * createPS_call_struct(char *policy, int size, char *addr){
PS_call_struct * new = malloc(sizeof(PS_call_struct));
new->policy = malloc(strlen(policy)+1);
strcpy(new->policy, policy);
new->size = malloc(sizeof(int));
new->size = size;
new->addr = malloc(strlen(addr)+1);
strcpy(new->addr, addr);
return new;
}
Как только я хочу использовать вложенная структура Я проверяю это следующим образом:
PS_call_struct * ps1 = createPS_call_struct(&h, 999, &k);
Handle * write_handle = createHandle(SRV_SOCK_PATH, "thread_cream",777,ps1);
PS_call_struct * techk = (PS_call_struct* )(write_handle->struct_pointer);
Теперь у меня возникла проблема, так как я не могу получить доступ ни к одному из значений после преобразования. Я могу получить доступ к значениям ps1
без проблем, но значения techk
в основном нулевые. Я не могу указать этот тип структуры, как показано ниже, так как я хотел бы иметь возможность использовать другой тип структуры.
typedef struct {
char * mem_addr;
char * name;
int option;
int write_byte_size;
PS_call_struct * struct_pointer;
} Handle;
Я не уверен, возможно ли то, что я спрашиваю, или только ли мой подход к этому неверен. Спасибо за вашу помощь.