Partager via


Avertissement C28193

La variable contient une valeur qui doit être examinée

Cet avertissement indique que la fonction appelante n’est pas case activée 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 remplace la valeur sans l’examiner.

Cet avertissement est similaire à l’avertissement C6031, mais il est signalé uniquement lorsque le code ne teste pas ou examine la valeur de la variable, par exemple en l’utilisant dans une comparaison. L’affectation de la valeur n’est pas considérée comme un examen suffisant pour éviter cet avertissement. L’alias du résultat de la fonction est considéré comme un examen suffisant, 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 qu’elles aient l’annotation _Check_return_ . Pour ces fonctions, l’outil Analyse du code peut signaler cet avertissement lorsque la valeur de retour n’est pas utilisée. Cet avertissement indique généralement que le code est incorrect, par exemple, qu’il peut contenir du code résiduel qui peut être supprimé. Toutefois, dans certains cas rares, la valeur de retour n’est intentionnellement pas utilisée. La plus courante de ces instances est l’endroit où une longueur de chaîne est retournée, mais pas réellement utilisée avant l’exécution d’un autre test. Cet autre test entraîne la simulation d’un chemin d’accès où la longueur de la chaîne finit par être inutilisée. Lorsque cela se produit, le code peut être correct, mais il peut être inefficace.

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

Réorganisez le code afin que la longueur de la chaîne soit retournée uniquement le long du chemin d’accès où elle est nécessaire.

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

Exemple

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

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

L'exemple de code suivant évite cet avertissement :

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