Compartilhar via


Problemas comuns de migração de 64 bits do Visual C++

Quando você usa o Visual C++ para criar aplicativos para serem executados em um sistema de operacional do Windows de 64 bits, você deve estar ciente dos seguintes problemas:

  • Um int e um long são valores de 32 bits em sistemas operacionais 64 bits.Para programas que você pretende compilar para plataformas de 64 bits, você deve ser cuidado para não atribuir ponteiros para variáveis de 32 bits.Os ponteiros são 64 bits em plataformas de 64 bits e você irá truncar o valor do ponteiro se você atribuir uma variável de 32 bits.

  • size_t, time_t, e ptrdiff_t são valores de 64 bits em sistemas operacionais 64 bits.

  • time_t é um valor de 32 bits em sistemas de operacional do Windows de 32 bits em versões do Visual C++ antes do Visual C++ 2005.time_t Agora é um inteiro de 64 bits por padrão.Para obter mais informações, consulte gerenciamento de tempo.

    Você deve estar ciente de onde seu código usa um int valor e o processa como um size_t ou time_t valor.É possível que o número pode aumentar para ser maior do que um número de 32 bits e os dados serão truncados quando ele é passado de volta para o int armazenamento.

O %x (hexadecimal int formato) printf modificador não funcionará conforme o esperado em um sistema de operacional do Windows de 64 bits.Ele só funciona nos primeiros 32 bits do valor que é passado para ele.

  • Use % I32x para exibir um tipo integral de 32 bits em formato hexadecimal.

  • Use % I64x para exibir um tipo integral de 64 bits em formato hexadecimal.

  • O %p (formato hexadecimal de um ponteiro) funcionará conforme o esperado em um sistema de operacional do Windows de 64 bits.

Para obter mais informações, consulte:

Consulte também

Outros recursos

Configurar programas para 64 bits (Visual C++)

Portando e atualizando programas