Avertissement C28302
Pour le paramètre de référence C++ 'parameter_name', un opérateur supplémentaire
_Deref_
a été trouvé sur 'annotation'.
Cet avertissement est signalé lorsqu’un niveau supplémentaire est _Deref_
utilisé sur un paramètre d’un type référence tel que T &a
. Une erreur courante lors de l’utilisation d’annotations SAL1 consiste à utiliser __deref
sur un type de référence. Les types de référence sont compris par SAL. Toutes les annotations sont donc déjà appliquées au type sous-jacent. Il ne s’agit généralement pas d’un problème dans SAL2, car l’annotation flottante __deref
libre a été supprimée. Si vous envisagez d’appliquer une annotation à un sous-type, vous devez utiliser plutôt les annotations SAL2 _AT_
ou _Outref_
.
Exemple
// Oops, trying to apply __elem_writableTo to the pointer being referenced
void f( __deref __elem_writableTo(size) int *& buffer, int size);
void func()
{
int buffer[100] = {};
int *pbuffer = buffer;
f(pbuffer, 100);
}
Pour résoudre le problème, mettez à jour les annotations SAL2 :
// Fix warning by switching to SAL2 syntax which has annotations that better describe what the function does.
void f( _Outref_result_buffer_(size) int *& buffer);
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour