Freigeben über


C28303

Warnung C28303: Für C++-Verweisparameter <parameter_name> wurde ein mehrdeutiger _Deref_ Operators in <Anmerkung> gefunden.

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

SAL2 erfordert keine die Verwendung eines zusätzlichen Ebene der _Deref_ bei der Behandlung von Verweisparameter.Auf diese spezifische Anmerkung ist mehrdeutig, über welchem Umfang Dereferenzieren ist für die Verwendung mit Anmerkungen versehen werden soll.Es ist möglicherweise notwendig, _At_ zu verwenden, um das spezifische Objekt mit Anmerkungen versehen werden soll, auf die verwiesen werden soll.

Beispiel

Im Folgenden Code wird diese Warnung generiert, da die Verwendung von __deref_out_ecount(n) nicht eindeutig ist:

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

Der oben genannten Anmerkung wie ein interpretiert werden konnte:

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

  • ein Verweis auf einen Zeiger auf ein Array von Ganzzahlen (n) (Interpretation SAL2)

Ein beliebiger der folgenden Schritte können diese Warnung zu korrigieren:

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