Problemas comunes de migración a 64 bits en Visual C++
Si utiliza Visual C++ para crear aplicaciones que se ejecuten en un sistema operativo Windows de 64 bits, debe tener presente lo siguiente:
Los valores int y long tienen 32 bits en los sistemas operativos Windows de 64 bits.Para programas que desea compilar para plataformas de 64 bits, debe tener cuidado de no asignar punteros a variables de 32 bits.Los punteros son de 64 bits en plataformas de 64 bits y truncará el valor de puntero si lo asigna a una variable de 32 bits.
Los valores size_t, time_t y ptrdiff_t tienen 64 bits en los sistemas operativos Windows de 64 bits.
time_t es un valor de 32 bits en sistemas operativos Windows de 32 bits en versiones de Visual C++ anteriores a Visual C++ 2005.Ahora time_t es un entero de 64 bits de forma predeterminada.Para obtener más información, vea Administración del tiempo.
Debe conocer los lugares del código donde se obtiene un valor int y se procesa como un valor size_t o time_t.Es posible que el número aumente hasta superar un valor de 32 bits, por lo que se truncarán los datos cuando se devuelvan al almacenamiento int.
El modificador printf de %x (formato int hexadecimal) no tendrá el comportamiento esperado en un sistema operativo Windows de 64 bits.Sólo funcionará en los primeros 32 bits del valor que se le pasa.
Use %I32x para presentar un entero en un sistema operativo Windows de 32 bits.
Use %I64x para presentar un entero en un sistema operativo Windows de 64 bits.
%p (formato hexadecimal de un puntero) tiene el comportamiento esperado en un sistema operativo Windows de 64 bits.
Para obtener más información, vea: