Partager via


C28193

avertissement C28193 : La variable contient une valeur qui doit être examinée.

Cet avertissement indique que la fonction d'appel ne vérifie pas la valeur de la variable spécifiée, qui a été fournie par une fonction.La valeur retournée est annotée avec l'annotation _Check_return_ , mais la fonction appelante n'utilise pas la valeur ou alors remplace la valeur sans l'examiner.

Cet avertissement est semblable à l'avertissement C6031 , mais il est émis uniquement lorsque le code ne teste pas ou ne vérifie pas la valeur de la variable, par exemple en l'utilisant dans une comparaison.Assigner simplement la valeur n'est pas considéré comme une révision suffisante pour éviter cet avertissement.Faire un alias du résultat hors de la fonction est considéré comme une révision suffisante, mais le résultat lui-même doit être annoté avec _Check_return_.

Certaines fonctions (telles que strlen) existent presque exclusivement pour leur valeur de retour, il est donc logique pour elles d'avoir l'annotation _Check_return_ .Pour ces fonctions, l'outil d'Analyse du Code peut émettre cet avertissement lorsque la valeur de retour n'est pas utilisée.Cela indique habituellement que le code est incorrect, par exemple, il peut contenir du code résiduel qui peut être supprimé.Toutefois, dans certaines rares instances, la valeur de retour est intentionnellement non utilisée.La plus courante de ces instances est celle où une longueur de chaîne est retournée mais pas réellement utilisée avant qu'un autre test soit effectué.Cet autre test provoque la simulation d'un chemin d'accès où la longueur de chaîne se termine en étant non utilisée.Lorsque cela se produit, le code peut être correct, mais il peut s'avérer inefficace.

Il existe deux stratégies principales pour gérer ces cas où la valeur de retour n'est pas utilisée :

Réorganiser le code de sorte que la longueur de chaîne soit retournée uniquement sur le tracé où elle est nécessaire.

Utilisez un avertissement #pragma pour supprimer l'avertissement -- si en réorganisant le code, vous voudriez rendre le code trop complexe ou sinon moins utile.

Exemple

L'exemple de code suivant génère cet avertissement :

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...

L'exemple de code suivant permet d'éviter cet avertissement :

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}