__w64

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

Синтаксис

Идентификатор типа__w64

Параметры

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

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

Замечания

Важно!

Параметр компилятора /Wp64 и ключевое слово устарели в Visual Studio 2010 и __w64 Visual Studio 2013 и удалены начиная с Visual Studio 2013. Если в командной строке используется /Wp64 параметр компилятора, компилятор выдает предупреждение командной строки D9002. Ключевое слово __w64 игнорируется автоматически. Вместо использования этого параметра и ключевое слово для обнаружения 64-разрядной переносимости используйте компилятор Microsoft C++, предназначенный для 64-разрядной платформы. Дополнительные сведения см. в разделе "Настройка Visual C++ для 64-разрядных целевых объектов x64".

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

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

Для совместимости с предыдущими версиями _w64 является синонимом__w64, если не указан параметр компилятора /Za (Отключить расширения языка).

Ключевое слово __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
}

См. также

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