Problemas comuns de migração de 64 bits do Visual C++
Quando você usa o Visual C++ para criar aplicativos sejam 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 Windows de 64 bits. Para programas que você planeja compilar para plataformas de 64 bits, tenha cuidado para não atribuir ponteiros para variáveis de 32 bits. 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 Windows de 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_tAgora é um inteiro de 64 bits, por padrão. Para obter mais informações, consulte Gerenciamento de tempo.
Você deve estar ciente de onde o seu código tomou uma int valor e a processa como um size_t ou time_t valor. É possível que o número pôde crescer 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 de armazenamento.
O %x (hexadecimal int formato) printf modificador não funcionará como esperado em um sistema operacional de Windows de 64 bits. Ele só funciona nos primeiro 32 bits do valor que é passado para ele.
Use % I32x para exibir um número inteiro em um sistema operacional Windows de 32 bits.
Use % I64x para exibir um número inteiro em um sistema operacional do Windows de 64 bits.
O % de p (formato hexadecimal para um ponteiro) funcionará como esperado em um sistema de operacional do Windows de 64 bits.
For more information, see: