C28303
Ostrzeżenie C28303: Dla parametru odwołania C++ <parameter_name>, znaleziono niejednoznaczny operator _Deref_ dla <annotation>.
To ostrzeżenie jest podobne do ostrzegania C28302 i jest zgłaszane, gdy dodatkowy poziom _Deref_ jest wykorzystywany w parametrze.
SAL2 nie wymaga użycia dodatkowego poziomu _Deref_ podczas pracy z odwołaniami do parametru.Ta szczególna adnotacja jest niejednoznaczna, co do którego poziomu dereferencja ma być adnotowana.Może być konieczne użycie _At_, aby odwołać się do wskazanego adnotowanego obiektu.
Przykład
Poniższy kod generuje to ostrzeżenie, ponieważ wykorzystanie __deref_out_ecount(n) jest niejednoznaczne:
void ref(__deref_out_ecount(n) int **&buff, int &n)
Powyższa adnotacja może być interpretowana jako albo:
Odwołanie do tablicy n wskaźników liczb całkowitych (interpretacja SAL1)
Odwołanie do wskaźnika do tablicy n liczb całkowitych tablica (interpretacja SAL2)
Ostrzeżenie można poprawić w jeden z następujących sposobów:
void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)