Compartir vía


__w64

Esta palabra clave específica de Microsoft está obsoleta. En versiones de Visual Studio anteriores a Visual Studio 2013, le permite marcar variables, de modo que cuando usted compile con /Wp64 el compilador notifique cualquier advertencia que se notificaría si estuviese compilando con un compilador de 64 bits.

Sintaxis

identificador de __w64 Tipo

Parámetros

type
Uno de los tres tipos que pueden causar problemas al migrar el código de un compilador de 32 bits a otro de 64 bits: int, long o un puntero.

identifier
Identificador de la variable que va a crear.

Comentarios

Importante

La opción del compilador /Wp64 y la palabra clave __w64 están en desuso en Visual Studio 2010 y Visual Studio 2013 y se eliminaron a partir de Visual Studio 2013. Si usa la opción del compilador /Wp64 en la línea de comandos, el compilador emite la advertencia D9002 de la línea de comandos. La palabra clave __w64 se ignora de modo silencioso. En lugar de usar esta opción y la palabra clave para detectar problemas de portabilidad a 64 bits, use un compilador de Microsoft C++ cuyo destino sea una plataforma de 64 bits. Para obtener más información, consulte Configuración de Visual C++ para destinos x64 de 64 bits.

Cualquier definición de tipo que contenga __w64 debe ser de 32 bits en x86 y de 64 bits en x64.

Para detectar problemas de portabilidad mediante versiones del compilador de Microsoft C++ anteriores a Visual Studio 2010, se debe especificar la palabra clave __w64 en cualquier definición de tipo que cambie de tamaño entre plataformas de 32 y 64 bits. Para dicho tipo, __w64 únicamente debe aparecer en la definición de 32 bits de la definición de tipo.

Por compatibilidad con versiones anteriores, _w64 es sinónimo de __w64, a menos que se especifique la opción del compilador /Za (deshabilitar extensiones de lenguaje).

Se omite la palabra clave __w64 si la compilación no usa /Wp64.

Para obtener más información sobre la portabilidad a 64 bits, vea los temas siguientes:

Ejemplo

// __w64.cpp
// compile with: /W3 /Wp64
typedef int Int_32;
#ifdef _WIN64
typedef __int64 Int_Native;
#else
typedef int __w64 Int_Native;
#endif

int main() {
   Int_32 i0 = 5;
   Int_Native i1 = 10;
   i0 = i1;   // C4244 64-bit int assigned to 32-bit int

   // char __w64 c;  error, cannot use __w64 on char
}

Vea también

Palabras clave