Sdílet prostřednictvím


C28303

upozornění C28303: Pro referenční parametr jazyka C++<parameter_name>, byl nalezen dvojznačný operátor _Deref_ v rámci <annotation>.

Toto upozornění je podobné upozornění C28302 a je vyvoláno, pokud je na parametr použita vyšší úroveň _Deref_.

SAL2 nevyžaduje použití vyšší úrovně _Deref_ při zabývání se referenčními parametry.Tato konkrétní poznámka neuvádí, ke které úrovni dereference je zamyšleno vytvoření komentáře.Může být nutné použít _At_ k odkazu na vytvoření poznámky na konkrétní objekt.

Příklad

Následující kód vygeneruje toto upozornění, protože použití __deref_out_ecount(n) je dvojznačné:

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

Výše uvedená poznámka může být interpretována buď jako:

  • odkaz na pole (n) ukazatelů na celá čísla (výklad SAL1)

  • odkaz na ukazatel na pole (n) celých čísel (výklad SAL2)

Toto upozornění může být opraveno pomocí informací uvedených níže:

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