Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta expresión escribe el valor del puntero a la secuencia. Si esto es intencionado, agregue una conversión explícita a "void*"
Comentarios
Esta regla se agregó en Visual Studio 2022 17.8.
C++ admite secuencias de caracteres anchos, como std::wostringstream, y secuencias de caracteres no anchos, como std::ostringstream. Al intentar imprimir una cadena ancha en una secuencia que no es ancha, se llama a la sobrecarga void* de operator<<. Esta sobrecarga imprime la dirección de la cadena ancha en lugar del valor.
Nombre de análisis de código: STREAM_OUTPUT_VOID_PTR
Ejemplo
El siguiente fragmento de código imprime el valor del puntero a la salida estándar en lugar de a la cadena "Pear":
#include <iostream>
int main() {
std::cout << L"Pear\n"; // Warning: C6392
}
Hay varias maneras de corregir este error. Si imprimir el valor del puntero no es intencionado, use una cadena que no sea ancha:
#include <iostream>
int main() {
std::cout << "Pear\n"; // No warning.
}
Como alternativa, use una secuencia ancha:
#include <iostream>
int main() {
std::wcout << L"Pear\n"; // No warning.
}
Si el comportamiento es intencionado, haga que la intención sea explícita y silencie la advertencia mediante una conversión explícita:
#include <iostream>
int main() {
std::cout << static_cast<void*>(L"Pear\n"); // No warning.
}