__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__w64identifier

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

Palavras-chave