Compartir a través de


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:

Vea también

Otros recursos

Programas de configuración para 64 bits (Visual C++)

Trasladar y actualizar programas