C28193
warning C28193: la variabile contiene un valore che deve essere esaminato
L'avviso indica che la funzione chiamante non sta controllando il valore della variabile specificata, fornita da una funzione.Il valore restituito viene annotato con l'annotazione _Check_return_, ma la funzione chiamante non sta utilizzando il valore o sta sovrascrivendo il valore senza esaminarlo.
Questo avviso è simile all'avviso C6031, ma viene visualizzato solo quando il codice non verifica o non esamina il valore della variabile, come utilizzandola in un confronto.Il semplice assegnamento del valore non è considerato un controllo sufficiente per evitare questo avviso.Fare l'alias del risultato della funzione viene considerato un controllo sufficiente, ma il risultato stesso deve essere annotato con _Check_return_.
Alcune funzioni (quali strlen) esistono quasi esclusivamente per il valore restituito, pertanto è consigliabile che esse dispongano dell'annotazione _Check_return_.Per queste funzioni, lo strumento di analisi del codice potrebbe segnalare l'avviso quando il valore restituito è inutilizzato.In questo modo viene indicato che il codice è errato, ad esempio, potrebbe contenere codice residuo che potrebbe essere eliminato.Tuttavia, in alcune rare occasioni, il valore restituito non viene utilizzato intenzionalmente.La più comune di queste istanze è quella in cui la lunghezza di una stringa viene restituita ma non viene effettivamente utilizzata prima che un altro test sia eseguito.Un altro test produce un percorso da simulare dove la lunghezza della stringa finisce col essere inutilizzata.In questo caso, il codice può essere corretto, ma potrebbe risultare inefficiente.
Esistono due strategie principali per la gestione di questi casi in cui il valore restituito è inutilizzato:
Riordino il codice in modo da restituire la lunghezza della stringa solo lungo il percorso in cui è necessaria.
Utilizzare un avviso #pragma per eliminare l'avviso--riordinando il codice, si potrebbe ottenere del codice troppo complesso o altrimenti meno utile.
Esempio
Il seguente codice di esempio genera questo warning:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
L'esempio di codice seguente evita questo avviso:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}