Partilhar via


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

Quando você usa o compilador Microsoft C++ (MSVC) para criar aplicativos para executar em um sistema operacional Windows de 64 bits, você deve estar ciente dos seguintes problemas:

  • Um int e um long são valores de 32 bits em sistemas operativos Windows de 64 bits. Para programas que você planeja compilar para plataformas de 64 bits, você deve ter cuidado para não atribuir ponteiros a variáveis de 32 bits. Os ponteiros são de 64 bits em plataformas de 64 bits e você truncará o valor do ponteiro se atribuí-lo a uma variável de 32 bits.

  • size_t, time_te ptrdiff_t são valores de 64 bits em sistemas operacionais Windows de 64 bits.

  • time_t é um valor de 32 bits nos sistemas operativos Windows de 32 bits no Visual Studio 2005 e versões anteriores. 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 cresça para ser maior do que um número de 32 bits e os dados sejam truncados quando forem passados de volta para o int armazenamento.

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

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

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

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

Para obter mais informações, consulte:

Ver também

Configurar projetos C++ para destinos x64 de 64 bits
Guia de portabilidade e atualização do Microsoft C++