Partager via


Avertissement C28302

Pour le paramètre de référence C++ 'parameter_name', un opérateur supplémentaire _Deref_ a été trouvé sur 'annotation'.

Cet avertissement est signalé lorsqu’un niveau supplémentaire est _Deref_ utilisé sur un paramètre d’un type référence tel que T &a. Une erreur courante lors de l’utilisation d’annotations SAL1 consiste à utiliser __deref sur un type de référence. Les types de référence sont compris par SAL. Toutes les annotations sont donc déjà appliquées au type sous-jacent. Il ne s’agit généralement pas d’un problème dans SAL2, car l’annotation flottante __deref libre a été supprimée. Si vous envisagez d’appliquer une annotation à un sous-type, vous devez utiliser plutôt les annotations SAL2 _AT_ ou _Outref_ .

Exemple

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

Pour résoudre le problème, mettez à jour les annotations SAL2 :

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

Voir aussi

Présentation de SAL