__w64
Essa palavra-chave específica da Microsoft é obsoleta. Em versões do Visual Studio anteriores ao Visual Studio 2013, isso permite marcar variáveis para que, quando você compilar com /Wp64, o compilador relate quaisquer avisos que seriam relatados se você estivesse compilando com um compilador de 64 bits.
Sintaxe
type
__w64
identifier
Parâmetros
tipo
Um dos três tipos que poderiam causar problemas em códigos sendo importados de um compilador de 32 bits para um compilador de 64 bits: int
, long
ou um ponteiro.
identifier
O identificador da variável que você está criando.
Comentários
Importante
A opção do compilador /Wp64 e a palavra-chave __w64
foram preteridas no Visual Studio 2010 e no Visual Studio 2013 e removidas a partir do Visual Studio 2013. Se você usar a opção de compilador /Wp64
na linha de comando, o compilador emitirá o Aviso de Linha de comando D9002. A palavra-chave __w64
é silenciosamente ignorada. Em vez de usar essa opção e a palavra-chave para detectar problemas de portabilidade de 64 bits, use um compilador Microsoft C++ destinado para uma plataforma de 64 bits. Para obter mais informações, consulte Configurar o Visual C++ para destinos x64 de 64 bits.
Qualquer typedef que tenha __w64
deve ser de 32 bits em x86 e de 64 bits x64.
Para detectar problemas de portabilidade usando versões do compilador Microsoft C++ anteriores ao Visual Studio 2010, a palavra-chave __w64
deve ser especificada em quaisquer typedefs que alterem o tamanho entre plataformas de 32 bits e 64 bits. Para qualquer tipo como esse, __w64
deve aparecer somente na definição de 32 bits do typedef.
Para compatibilidade com versões anteriores, _w64 é um sinônimo para __w64
, a menos que a opção do compilador /Za (Desabilitar extensões de linguagem) seja especificada.
A palavra-chave __w64
será ignorada se a compilação não usar /Wp64
.
Para obter mais informações sobre portabilidade para 64 bits, consulte os tópicos a seguir:
Exemplo
// __w64.cpp
// compile with: /W3 /Wp64
typedef int Int_32;
#ifdef _WIN64
typedef __int64 Int_Native;
#else
typedef int __w64 Int_Native;
#endif
int main() {
Int_32 i0 = 5;
Int_Native i1 = 10;
i0 = i1; // C4244 64-bit int assigned to 32-bit int
// char __w64 c; error, cannot use __w64 on char
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de