Jaka jest różnica między następującymi adnotacjami SAL?Jaka jest różnica między __deref_out_opt a __deref_opt_out?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
Jaka jest różnica między następującymi adnotacjami SAL?Jaka jest różnica między __deref_out_opt a __deref_opt_out?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
PSTR*
się parametr oznacza wywołujący przepływa w buforze, który odbiera wskaźnik do łańcucha.
W __deref_out_opt łańcuch jest opcjonalny (funkcja umieszcza NULL w buforze dostarczonym przez wywołującego).
W __deref_opt_out bufor jest opcjonalny (wywołujący przechodzi NULL, aby wskazać brak zainteresowania wartością wyjściową).
Prawdopodobnie istnieje możliwość połączenia tych pojęć, powinien to być modyfikator __deref_opt_out_opt
.
Gdzie umieścić _opt dla "innego przypadku", gdzie funkcja może ustawić parametr wyjściowy na wartość NULL? – John
Po 'out', jak w' __deref_out_opt'. Dokumentacja SAL opisuje przypadek '__deref_opt' specjalnie, w takim przypadku bufor może nie istnieć. Chcesz, aby bufor istniał, a więc zwykły '__deref', ale zapisany w nim wskaźnik może mieć wartość NULL, stąd' _out_opt'. –