/Zc:wchar_t (wchar_t es un tipo nativo)
Analice wchar_t
como un tipo integrado conforme al estándar de C++.
Sintaxis
/Zc:wchar_t[-]
Comentarios
Si /Zc:wchar_t está activado, wchar_t
es una palabra clave para un tipo entero integrado en el código compilado como C++. Si se especifica /Zc:wchar_t- (con un signo menos) o en el código compilado como C, wchar_t
no es un tipo integrado. En su lugar, wchar_t
se define como para typedef
unsigned short
en el encabezado canónico stddef.h. (La implementación de Microsoft la define en otro encabezado incluido por stddef.h y otros encabezados estándar).
No se recomienda usar /Zc:wchar_t, ya que el estándar de C++ requiere que wchar_t
sea un tipo integrado. Si usa la versión de typedef
, pueden producirse problemas de portabilidad. Si realiza la actualización a partir de versiones anteriores de Visual Studio y encuentra un error C2664 del compilador porque el código intenta convertir implícitamente un tipo wchar_t
a unsigned short
, se recomienda cambiar el código para corregir el error, en lugar de establecer /Zc:wchar_t-.
La opción /Zc:wchar_t está activada de forma predeterminada en compilaciones de C++ y se omite en compilaciones de C. La opción /permissive- no afecta a /Zc:wchar_t.
Microsoft implementa wchar_t
como un valor sin signo de dos bytes. Se asigna al tipo nativo especifico de Microsoft __wchar_t
. Para más información sobre wchar_t
, consulte Rangos de tipos de datos y Tipos fundamentales.
Si escribe código nuevo que tiene que interoperar con un código anterior que sigue utilizando la versión typedef
de wchar_t
, puede proporcionar sobrecargas para las dos variantes unsigned short
y __wchar_t
de wchar_t
, de modo que el código pueda vincularse con el código compilado mediante /Zc:wchar_t o el código compilado sin él. De lo contrario, tendría que proporcionar dos compilaciones distintas de la biblioteca: una con /Zc:wchar_t habilitado y otra sin él. Incluso en este caso, se recomienda compilar el código antiguo mediante el mismo compilador que se utiliza para compilar el código nuevo. Nunca mezcle archivos binarios compilados con compiladores diferentes.
Cuando se especifica /Zc:wchar_t, se definen los símbolos _WCHAR_T_DEFINED y _NATIVE_WCHAR_T_DEFINED. Para obtener más información, consulta Predefined Macros.
Si el código usa las funciones globales COM del compilador, dado que /Zc:wchar_t ahora está habilitado de forma predeterminada, se recomienda cambiar las referencias explícitas a comsupp.lib (ya desde pragma comment o línea de comandos) a comsuppw.lib o comsuppwd.lib. (Si debe compilar con /Zc:wchar_t, utilice comsupp.lib). Si incluye el archivo de encabezado comdef.h, se especificará automáticamente la biblioteca correcta. Consulte Compatibilidad con COM del compilador para más información.
El tipo wchar_t
insertado no se admite cuando se compila código de C. Para obtener más información sobre los problemas de conformidad de Visual C++, vea Comportamiento no estándar.
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.
Seleccione la página Propiedades de configuración>C/C++>Lenguaje.
Modifique la propiedad Tratar wchar_t como tipo integrado.