Compartir a través de


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

Al utilizar Visual C++ para crear aplicaciones que se ejecutan en un sistema operativo Windows de 64 bits, debe tener en cuenta lo siguiente:

  • int y long 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 y ptrdiff_t son valores de 64 bits en sistemas operativos Windows de 64 bits.

  • time_t es un valor de 32 bits en sistemas de operativos Windows de 32 bits en las versiones de Visual C++ anteriores a Visual C++ 2005. time_t es ahora un entero de 64 bits de forma predeterminada. Para 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 valor size_t o time_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 almacenamiento int.

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 obtener más información, consulte:

Vea también

Otros recursos

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

Trasladar y actualizar programas