Partager via


C28303

avertissement C28303 : Pour le paramètre de référence C++ <parameter_name>, un opérateur ambigu _Deref_ a été trouvé sur l' <annotation>.

Cet avertissement est semblable à l'avertissement C28302 et est enregistré lorsqu'un niveau supplémentaire de _Deref_ est utilisé sur un paramètre.

SAL2 ne requiert pas l'utilisation d'un niveau supplémentaire de _Deref_ lors du traitement des paramètres de référence.Cette annotation particulière est ambiguë quant au niveau de déréférencement conçu pour être annoté.Il peut être nécessaire d'utiliser _At_ pour référencer l'objet spécifique à annoter.

Exemple

Le code suivant génère cet avertissement car l'utilisation de __deref_out_ecount(n) est ambigüe :

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

L'annotation ci-dessus peut être interprétée comme suit :

  • une référence à un tableau (de n) pointeurs sur des entiers (interprétation SAL1)

  • une référence à un pointeur sur un tableau (de n) entiers (interprétation SAL1)

L'une ou l'autre des conditions suivantes peut corriger cet avertissement :

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