Problemas comunes de migración a 64 bits en Visual C++

Actualización: noviembre 2007

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. En Visual C++ 2005 y versiones posteriores, el valor predeterminado de time_t es un entero de 64 bits. 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 al respecto, vea:

Vea también

Otros recursos

Programación de 64 bits con Visual C++

Trasladar y actualizar programas