Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
To wyrażenie zapisuje wartość wskaźnika do strumienia. Jeśli jest to zamierzone, dodaj jawne rzutowanie do "void *"
Ta reguła została dodana w programie Visual Studio 2022 17.8.
Uwagi
Język C++ obsługuje strumienie znaków szerokich, takie jak , i strumienie znaków, takie jak std::wostringstream
std::ostringstream
. Próba wydrukowania szerokiego ciągu w strumieniu niewidomym wywołuje void*
przeciążenie elementu operator<<
. To przeciążenie wyświetla adres szerokiego ciągu zamiast wartości.
Nazwa analizy kodu: STREAM_OUTPUT_VOID_PTR
Przykład
Poniższy fragment kodu wyświetla wartość wskaźnika do standardowych danych wyjściowych zamiast ciągu "Pear"
:
#include <iostream>
int main() {
std::cout << L"Pear\n"; // Warning: C6392
}
Istnieje wiele sposobów naprawienia tego błędu. Jeśli drukowanie wartości wskaźnika jest niezamierzone, użyj ciągu innego niżwide:
#include <iostream>
int main() {
std::cout << "Pear\n"; // No warning.
}
Alternatywnie użyj szerokiego strumienia:
#include <iostream>
int main() {
std::wcout << L"Pear\n"; // No warning.
}
Jeśli zachowanie jest zamierzone, ustaw intencję jawną i wycisz ostrzeżenie przy użyciu jawnego rzutowania:
#include <iostream>
int main() {
std::cout << static_cast<void*>(L"Pear\n"); // No warning.
}