__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
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по