/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 typedefunsigned 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

  1. 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.

  2. Seleccione la página Propiedades de configuración>C/C++>Lenguaje.

  3. Modifique la propiedad Tratar wchar_t como tipo integrado.

Para establecer esta opción del compilador mediante programación

Consulte también

/Zc (Ajuste)