Avertissement C28251

Annotation incohérente pour la fonction : cette instance a une erreur

Cet avertissement fait référence à une erreur dans l’annotation et reflète l’exigence que les annotations sur une déclaration de fonction doivent correspondre à celles de la définition, sauf si une fonction typedef est impliquée. Dans ce cas, la fonction typedef est considérée comme définitive pour la déclaration et la définition.

Les annotations sont généralement implémentées en tant que macros, et une macro génère généralement plusieurs annotations de bas niveau. Cet avertissement est signalé pour chaque annotation de bas niveau sans correspondance. Par conséquent, une seule macro d’annotation sans correspondance peut générer de nombreuses annotations de bas niveau sans correspondance. Il est préférable de comparer la déclaration et le code source de définition pour vous assurer qu’ils sont identiques. (Les différences triviales dans l’ordre des annotations ne sont pas signalées.)

La comparaison est toujours entre la première déclaration trouvée et celle actuelle. S’il y a plus de déclarations, chaque déclaration est case activée en groupes de deux. Il n’est actuellement pas possible d’effectuer une comparaison autre que dans les paires, bien qu’il soit possible d’identifier qu’il y a plus de deux déclarations/définitions. Le champ de texte ci-dessus contient une liste des annotations qui diffèrent (à un niveau assez bas) entre les deux instances.

Ce message d’avertissement affiche le texte du code sous-jacent envoyé au compilateur, et non les macros utilisées pour insérer réellement l’annotation dans le code source (comme c’est le cas chaque fois que les macros sont utilisées). En général, vous n’avez pas besoin de comprendre les annotations de bas niveau, mais vous devez reconnaître que les annotations sont signalées comme incohérentes entre les numéros de ligne signalés dans le message d’erreur. Pour la plupart, une inspection du code source permettra de clarifier la raison pour laquelle l’incohérence existe.