Freigeben über


Warnung C28302

Für den C++-Referenzparameter "parameter_name" wurde ein zusätzlicher _Deref_ Operator für "annotation" gefunden.

Diese Warnung wird gemeldet, wenn eine zusätzliche Ebene verwendet _Deref_ wird, die für einen Parameter eines Verweistyps verwendet wird, z T &a. B. . Ein häufiger Fehler bei der Verwendung von SAL1-Anmerkungen ist die Verwendung __deref in einem Bezugstyp. Referenztypen werden von SAL verstanden, sodass alle Anmerkungen bereits auf den zugrunde liegenden Typ angewendet werden. Es ist in der Regel kein Problem in SAL2, da die frei schwebende __deref Anmerkung entfernt wurde. Wenn Sie eine Anmerkung auf einen Untertyp anwenden möchten, sollten Sie stattdessen sal2 _AT_ oder _Outref_ Anmerkungen verwenden.

Beispiel

// Oops, trying to apply __elem_writableTo to the pointer being referenced
void f( __deref __elem_writableTo(size) int *& buffer, int size);

void func()
{
  int buffer[100] = {};
  int *pbuffer = buffer;
  f(pbuffer, 100);
}

Um das Problem zu beheben, aktualisieren Sie die SAL2-Anmerkungen:

// Fix warning by switching to SAL2 syntax which has annotations that better describe what the function does.
void f( _Outref_result_buffer_(size) int *& buffer);

Siehe auch

Einführung in SAL