Поделиться через


__w64

(Относится к системам Майкрософт.) Это ключевое слово является устаревшим. В версиях Visual Studio более ранних, чем Visual Studio 2013, оно позволяет помечать переменные таким образом, чтобы при компиляции с параметром /Wp64 компилятор выводил все предупреждения, которые должны выводиться при компиляции с помощью 64-разрядного компилятора.

        type __w64 identifier

Параметры

  • type
    Один из трех типов, которые могут вызвать проблемы в коде при переносе с 32- на 64-разрядный компилятор: int, long или указатель.

  • identifier
    Идентификатор создаваемой переменной.

Заметки

Важно!

Параметр компилятора /Wp64 и ключевое слово __w64 являются устаревшими в Visual Studio 2010 и Visual Studio 2013. Они удалены в версиях, начиная с Visual Studio 2013.Если в командной строке используется параметр компилятора /Wp64, то компилятор выводит Command-Line Warning D9002.Ключевое слово __w64 просто игнорируется.Обнаруживать конфликты переносимости на 64-разрядные платформы рекомендуется не при помощи этого параметра и ключевого слова, а при помощи компилятора Visual C++, предназначенного для 64-разрядной платформы.Дополнительные сведения см. в разделе Настройка 64-разрядных программ (Visual C++).

Любое определение типа, в котором имеется ключевое слово __w64, должно иметь длину в 32 разряда на 32-разрядных (x86) платформах и в 64 разряда на 64-разрядных (x64) платформах.

Для обнаружения проблем переносимости с помощью компиляторов Visual C++ версий более ранних, чем Visual Studio 2010, должно быть указано ключевое слово __w64 для всех определений типов, изменяющих размер при переносе с 32-разрядной платформы на 64-разрядную. Для всех таких типов ключевое слово __w64 должно использоваться только в 32-разрядных определениях типов.

Ключевое слово __w64 игнорируется, если компиляция выполняется без параметра /Wp64.

Дополнительные сведения о переносе на 64-разрядные платформы см. в следующих разделах:

Пример

// __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
}

См. также

Ссылки

Ключевые слова в C++