Problemas comunes de migración a 64 bits en Visual C++
Al usar el compilador de Microsoft C++ (MSVC) para crear aplicaciones que se ejecutan en un sistema operativo Windows de 64 bits, debe tener en cuenta lo siguiente:
int
ylong
son valores de 32 bits en sistemas operativos Windows de 64 bits. Debe tener cuidado de no asignar punteros a variables de 32 bits en los programas que piense compilar para plataformas de 64 bits. Los punteros son de 64 bits en las plataformas de 64 bits; si asigna un puntero a una variable de 32 bits, se truncará su valor.size_t
,time_t
yptrdiff_t
son valores de 64 bits en sistemas operativos Windows de 64 bits.time_t
es un valor de 32 bits en sistemas operativos Windows de 32 bits en Visual Studio 2005 y versiones anteriores.time_t
es ahora un entero de 64 bits de forma predeterminada. Para obtener más información, vea Administración de la duración.Debe tener en cuenta los lugares en que el código toma un valor
int
y lo procesa como valorsize_t
otime_t
. Es posible que el número aumente hasta superar un número de 32 bits y que los datos se trunquen al volver a pasarlo al almacenamientoint
.
El modificador printf
%x (int
en formato hexadecimal) no funcionará según lo esperado en un sistema operativo Windows de 64 bits. Sólo operará en los primeros 32 bits del valor que se le pasa.
Use % I32x para presentar un tipo entero de 32 bits en formato hexadecimal.
Use % I32x para presentar un tipo entero de 64 bits en formato hexadecimal.
El modificador %p (un puntero en formato hexadecimal) funcionará según lo esperado en un sistema operativo Windows de 64 bits.
Para más información, vea:
Consulte también
Configuración de proyectos de C++ para destinos x64 de 64 bits
Guía de migración y actualización de Visual C++