Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu ifade, işaretçinin değerini akışa yazar. Bu kasıtlı olarak yapılırsa , 'void *' öğesine açık bir atama ekleyin
Açıklamalar
Bu kural Visual Studio 2022 17.8'e eklendi.
C++ gibi std::wostringstreamgeniş karakter akışlarını ve gibi std::ostringstreamgenel olmayan karakter akışlarını destekler. Geniş bir dizeyi genel olmayan bir akışa yazdırmaya çalışmak aşırı yüklemesini void*çağırıroperator<<. Bu aşırı yükleme, değer yerine geniş dizenin adresini yazdırır.
Kod analizi adı: STREAM_OUTPUT_VOID_PTR
Örnek
Aşağıdaki kod parçacığı, işaretçinin değerini dize "Pear"yerine standart çıktıya yazdırır:
#include <iostream>
int main() {
std::cout << L"Pear\n"; // Warning: C6392
}
Bu hatayı düzeltmenin birden çok yolu vardır. İşaretçi değerini yazdırma istenmediyse, genel olmayan bir dize kullanın:
#include <iostream>
int main() {
std::cout << "Pear\n"; // No warning.
}
Alternatif olarak geniş bir akış kullanın:
#include <iostream>
int main() {
std::wcout << L"Pear\n"; // No warning.
}
Davranış kasıtlı olarak yapılırsa, amacı açık hale getirin ve açık bir atama kullanarak uyarıyı susturun:
#include <iostream>
int main() {
std::cout << static_cast<void*>(L"Pear\n"); // No warning.
}