Jeśli lpMsgBuf jest już wskaźnikiem na ciąg T i jeśli interfejs API oczekuje, że wskaźnik będzie wskazywał bezpośrednio na ciąg T, nie powinieneś w ogóle używać rzutowania. Innymi słowy, jeśli typ danych jest już poprawny, dobrze jest nie używać niepotrzebnych rzutowań. Powodem jest to, że nadużywanie rzutowań może oślepić cię na błędy w tym samym czasie, gdy rzutowania zamykają kompilator.
Jeśli lpMsgBuf jest już wskaźnikiem do ciągu T i jeśli interfejs API oczekuje wskaźnika do ciągu T, ale oczekuje, że wskaźnik do wskaźnika zostanie rzutowany na wskaźnik typu na ciąg T (a interfejs API go rzuci z powrotem podczas korzystania z niego), to robisz to dobrze.
Jeśli lpMsgBuf jest wskaźnikiem do czegoś innego (poprawnego typu) i API oczekuje wskaźnika do Twojego typu, ale API oczekuje tych gier castingowych, to robisz to dobrze.
Jeśli lpMsgBuf jest wskaźnikiem do ciągu T i jeśli API oczekuje wskaźnika do ciągu T, to za pomocą operatora & konstruujesz wskaźnik do wskaźnika do ciągu T, którego API nie oczekuje, i używając rzutowania, mówisz kompilatorowi, aby zamienił ten wskaźnik na wskaźnik we wskaźnik typu na ciąg T, mimo że wartość nadal wskazuje na wskaźnik. Więc pomyślnie zamknąłeś kompilator, ale nadal dostarczasz śmieciowe wyniki sobie lub swoim klientom.
Tak więc bez dodatkowych szczegółów na temat tego, która strona MSDN każe Ci utworzyć wskaźnik do wskaźnika i grać w gry castingowe dla jakiego API, nie możemy zgadnąć, czy robisz to dobrze, czy błędnie odczytasz MSDN, czy też MSDN mówi napisać zły kod.
Teraz, jeśli rzutowanie jest rzeczywiście prawidłowe, wybór składni, której chcesz użyć, zależy od stylu, jaki zastosujesz w pozostałej części programu.
person
Windows programmer
schedule
27.04.2009