Ho modificato un codice scritto da un dipendente precedente e ho trovato una funzione con la seguente firma:
BOOL WINAPI PrependPadding(
_In_ SIZE_T cbPadding,
_In_ SIZE_T cbRow,
_Out_writes_bytes_(cbPadding) _On_failure_(_Post_null_) BYTE *bRow
)
Per chi non ha familiarità con il metanaggio di annotazione SAL di Microsoft, le annotazioni su questa funzione indicano fondamentalmente che se la funzione non dovesse funzionare per qualsiasi motivo, il puntatore bRow
sarà NULL
dopo l'esecuzione di questa funzione.
Trovo che questo sia interessante perché impone che il chiamante debba controllare il valore di ritorno per successo / fallimento - se provi a fare qualcosa con bRow
dopo che questa funzione ha avuto esito negativo, ovviamente si bloccherà.
Tuttavia, questa è generalmente una buona pratica? Non ho mai visto questo usato prima e mi chiedo se è per un motivo.