C28303C28303

avertissement C28303 : paramètre de référence C++ pour < nom_paramètre >, un ambigu _Deref_ opérateur a été trouvé sur <annotation >.warning C28303: For C++ reference-parameter <parameter_name>, an ambiguous _Deref_ operator was found on <annotation>.

Cet avertissement similaire à l’avertissement C28302 et est signalée lorsqu’un niveau supplémentaire de _Deref_ est utilisé pour un paramètre.This warning similar to warning C28302 and is reported when an extra level of _Deref_ is used on a parameter.

SAL2 ne nécessite pas l’utilisation d’un niveau supplémentaire de _Deref_ lorsque vous traitez des paramètres de référence.SAL2 does not require the use of an extra level of _Deref_ when dealing with reference parameters. Cette annotation particulier est ambiguë concernant le niveau de déréférencement est destiné à être annoté.This particular annotation is ambiguous as to which level of dereference is intended to be annotated. Il peut être nécessaire d’utiliser _At_ pour référencer l’objet spécifique à annoter.It may be necessary to use _At_ to reference the specific object to be annotated.

ExempleExample

Le code suivant génère cet avertissement, car l’utilisation de __deref_out_ecount(n) est ambigu :The following code generates this warning because the use of __deref_out_ecount(n) is ambiguous:

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

L’annotation ci-dessus peut être interprétée comme :The above annotation could be interpreted either as:

  • une référence à un pointeurs de tableau (de n) à des entiers (SAL1 interprétation)a reference to an array (of n) pointers to integers (SAL1 interpretation)

  • une référence à un pointeur vers un entiers de tableau (de n) (interprétation de SAL2)a reference to a pointer to an array (of n) integers (SAL2 interpretation)

    Les opérations suivantes pour corriger cet avertissement :Either of the following can correct this warning:

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