Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

/Wp64

31 Мар 2013

/Wp64 (Detect 64-Bit Portability Issues) - ключ компилятора Visual C++. Ключ появился в Visual Studio 2003 и предназначался для подготовки миграции приложений на 64-битные системы. В Visual Studio 2008 ключ /Wp64 считается устаревшим, поскольку надо уже давно компилировать 64-битные приложения, а не готовиться к этому.

При задании ключа /Wp64 компилятор выявляет некоторые потенциальные ошибки, которые могут возникнуть при компиляции Си/Си++ кода для 64-битных систем. Проверка кода заключается в том, что типы, которые отмечены в 32-битном коде ключевым словом __w64 интерпретируются при проверке как 64-битные типы.

Например, если мы имеем следующий код:

typedef int MyInt32;
#ifdef _WIN64
  typedef __int64 MySSizet;
#else
  typedef int MySSizet;
#endif
void foo() {
  MyInt32 value32 = 10;
  MySSizet size = 20;
  value32 = size;
}

Выражение "value32 = size;" на 64-битной системе приведет к урезанию значения, а следовательно к потенциальной ошибке. Мы хотим это диагностировать. Но при компиляции 32-битного приложения, все корректно и мы не получим предупреждения.

Чтобы подготовиться к 64-битным системам нам следует добавить ключ /Wp64 и вставить ключевое слово __w64 при описании типа MySSizet в 32-битном варианте. В результате код станет выглядеть так:

typedef int MyInt32;
#ifdef _WIN64
  typedef __int64 MySSizet;
#else
  typedef int __w64 MySSizet; // Add __w64 keyword
#endif
void foo() {
  MyInt32 value32 = 10;
  MySSizet size = 20;
  value32 = size; // C4244 64-bit int assigned to 32-bit int
}

Теперь мы получим предупреждение C4244, которое поможет подготовиться к переносу кода на 64-битную платформу.

Следует понимать, что возможности /Wp64 достаточно ограничены. Более детальную и специализированную проверку кода может осуществить коммерческий инструмент Viva64, специально созданный для облегчения переноса приложений на 64-битные системы.

Библиографический список

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам