Advertencia C28303
Para el parámetro reference-parameter <de C++ parameter_name>, se encontró un operador ambiguo
_Deref_
en "annotation".
Esta advertencia es similar a la advertencia C28302 y se notifica cuando se usa un nivel adicional de _Deref_
en un parámetro.
SAL2 no requiere el uso de un nivel adicional de cuando se trabaja con parámetros de _Deref_
referencia. Esta anotación en particular es ambigua en cuanto al nivel de desreferencia que se pretende anotar. Puede ser necesario usar _At_
para hacer referencia al objeto específico que se va a anotar.
El código siguiente genera esta advertencia porque el uso de __deref_out_ecount(n)
es ambiguo:
void ref(__deref_out_ecount(n) int **&buff, int &n)
La anotación anterior podría interpretarse como:
una referencia a una matriz (de n) punteros a valores enteros (interpretación SAL1)
una referencia a un puntero a una matriz (de n) valores enteros (interpretación SAL2)
Cualquiera de los siguientes cambios puede corregir esta advertencia:
void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)