Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa espressione scrive il valore del puntatore nel flusso. Se questa operazione è intenzionale, aggiungere un cast esplicito a 'void *'
Osservazioni:
Questa regola è stata aggiunta in Visual Studio 2022 17.8.
C++ supporta flussi di caratteri wide, std::wostringstreamad esempio , e flussi di caratteri non a livello, std::ostringstreamad esempio . Il tentativo di stampare una stringa wide in un flusso non a livello chiama l'overload void* di operator<<. Questo overload stampa l'indirizzo della stringa wide anziché il valore.
Nome dell'analisi del codice: STREAM_OUTPUT_VOID_PTR
Esempio
Il frammento di codice seguente stampa il valore del puntatore all'output standard anziché alla stringa "Pear":
#include <iostream>
int main() {
std::cout << L"Pear\n"; // Warning: C6392
}
Esistono diversi modi per correggere l'errore. Se la stampa del valore del puntatore non è intenzionale, utilizzare una stringa non a livello:
#include <iostream>
int main() {
std::cout << "Pear\n"; // No warning.
}
In alternativa, usare un flusso wide:
#include <iostream>
int main() {
std::wcout << L"Pear\n"; // No warning.
}
Se il comportamento è intenzionale, rendere esplicita l'intenzione e disattivare l'avviso usando un cast esplicito:
#include <iostream>
int main() {
std::cout << static_cast<void*>(L"Pear\n"); // No warning.
}