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