У меня проблемы с передачей значения структуры для интерфейса C для очереди, которая управляет очередью как связанным списком. Он сохраняет данные как пустые указатели, чтобы интерфейс мог управлять любыми данными в целом. Я передаю значение в качестве ссылки на указатель, которая затем сохраняется в качестве пустого указателя. Позже, когда он возвращается, я не знаю, как вернуть указатель void к исходному значению.
Что мне нужно сделать? Вот пример структуры.
typedef struct MyData {
int mNumber;
} MyData;
Чтобы упростить все, я создал фиктивную функцию, которая имитирует все в нескольких строках кода.
void * give_and_go(void *data) {
void *tmp = data;
return tmp;
}
Вы можете видеть, что он принимает пустой указатель, устанавливает его как локальную переменную и затем возвращает его. Теперь мне нужно вернуть исходное значение.
MyData inVal;
inVal.mNumber = 100;
void * ptr = give_and_go(&inVal);
MyData outVal; // What converts ptr to the out value?
Вот где я застрял. Я использую Xcode, и он не позволит мне просто приводить ptr к MyData или различным альтернативам, которые я пробовал.
Любая помощь приветствуется.