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);