Freigeben über


Warnung C28303

Für C++-Referenzparameter-parameter_name <>wurde ein mehrdeutiger _Deref_ Operator für "annotation" gefunden.

Diese Warnung ähnelt der Warnung C28302 und wird gemeldet, wenn für einen Parameter eine zusätzliche Ebene _Deref_ verwendet wird.

SAL2 erfordert nicht die Verwendung einer zusätzlichen Ebene bei _Deref_ Bezugsparametern. Diese besondere Anmerkung ist mehrdeutig als die Ableitungsebene, die annotiert werden soll. Es kann erforderlich sein, auf _At_ das spezifische Objekt zu verweisen, das kommentiert werden soll.

Beispiel

Der folgende Code generiert diese Warnung, da die Verwendung __deref_out_ecount(n) nicht eindeutig ist:

void ref(__deref_out_ecount(n) int **&buff, int &n)

Die oben genannte Anmerkung kann entweder folgendermaßen interpretiert werden:

  • ein Verweis auf ein Array (von n) Zeigern auf ganze Zahlen (SAL1-Interpretation)

  • einen Verweis auf einen Zeiger auf ein Array (von n) ganzen Zahlen (SAL2-Interpretation)

    Eine der folgenden Änderungen kann diese Warnung korrigieren:

void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)