__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
}