Partager via


Avertissement C28303

Pour le paramètre <de référence C++ parameter_name>, un opérateur ambigu _Deref_ a été trouvé sur « annotation ».

Cet avertissement similaire à l’avertissement C28302 est signalé lorsqu’un niveau supplémentaire est _Deref_ utilisé sur un paramètre.

SAL2 ne nécessite pas l’utilisation d’un niveau supplémentaire lorsque vous traitez des paramètres de _Deref_ référence. Cette annotation particulière est ambiguë quant au niveau de déréférence qui est destiné à ê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 est __deref_out_ecount(n) ambiguë :

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

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

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

  • référence à un pointeur vers un tableau (de n) entiers (interprétation SAL2)

    L’une des modifications suivantes peut corriger cet avertissement :

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