Compartilhar via


Common Visual C++ 64-bit Migration Issues

Quando você usa o Visual C++ para criar aplicativos executados em um sistema operacional Windows de 64 bits, você deve estar ciente das seguintes questões:

  • int e long são valores de 32 bits em sistemas operacionais Windows de 64 bits.Para programas que você pretende compilar para plataformas de 64 bits, você deve ter cuidado para não atribua ponteiros a variáveis de 32 bits.Ponteiros são de 64 bits em plataformas de 64 bits, e você truncará o valor do ponteiro se você atribui a uma variável de 32 bits.

  • size_t, time_t, eptrdiff_t são valores de 64 bits em sistemas operacionais Windows de 64 bits.

  • time_t é um valor de 32 bits em sistemas operacionais 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 o código recebe um valor de int e o processa como um valor de size_t ou de time_t .É possível que o número pode vir é maior do que um número de 32 bits e os dados serão truncados quando eles são passados de volta para o armazenamento de int .

O modificador de %x (hex o formato de int ) printf não funcionará como esperado em um sistema operacional Windows de 64 bits.Operará somente durante os primeiros 32 bits do valor que você for passado.

  • Use %I32x para exibir um inteiro em um sistema operacional de 32 bits do Windows.

  • Use %I64x para exibir um inteiro em um sistema operacional de 64 bits do Windows.

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

Para obter mais informações, consulte

Consulte também

Outros recursos

Configuring Programs for 64-Bit (Visual C++)

Porting and Upgrading Programs