Używam tej biblioteki C w mojej aplikacji C++, a jedna z funkcji zwraca void *. Teraz nie jestem najostrzejszy z czystym C, ale słyszałem, że pustka * może być rzucana do prawie każdego innego typu *. Wiem też, że oczekuję float na końcu gdzieś z tej funkcji.void * to literówka, jak rzutować?
Więc wyrzuciłem pustkę * do pływaka * i wyłączyłem pływak *, zderzenie. cerować!. I debugowania kodu i gdb niech to ocenić (float)voidPtr
i niski i oto wartość jest tym, czego oczekuję i potrzebuję!
Ale czekaj, nie da się tego samego podczas kompilacji. Jeśli piszę float number = (float)voidPtr;
, to nie kompiluje się, co jest zrozumiałe.
A teraz pytanie: jak mogę uwolnić się od tej szalejącej pustki *?
EDYCJA: Dzięki H2CO3 został rozwiązany, ale widzę wiele odpowiedzi i komentarzy pojawiających się i znikających nie wierząc, że mógłbym zrobić (float) voidPtr w gdb. oto zrzut ekranu.
Oczywiście, lepsze rozwiązanie nie kończy się na takiej sytuacji. – delnan
@delnan, więc OP powinien zrezygnować z całej biblioteki, ponieważ używa wskaźników void? –
@CoreyOgburn Nie, mówię o nieinterpektywie interpretowanej jako wskaźnik pustej przestrzeni. 'void *' w niektórych przypadkach jest w porządku, ale w przypadku OP, ktoś gdzieś spieprzył. Być może OP źle używa biblioteki. – delnan