Как используя ifdef узнать, что объявлен тип DWORD_PTR?

Memsize-типы DWORD_PTR, INT_PTR, LONG_PTR, UINT_PTR и ULONG_PTR предназначены для поддержки 64-битного кода и способны безопасно хранить в себе указатель в независимости от разрядности платформы. Однако в старых версиях Windows Platform SDK данные типы могут отсутствовать. Наилучшим решением данной проблемы будет обновление SDK до последней версии, но если это по какой-то причине невозможно, то данные типы можно объявить самостоятельно.

В связи с тем, что данные типы объявлены с помощью спецификатора typedef, нет единого надёжного способа на этапе препроцессинга с помощью директивы #ifdef определить их присутствие в используемой версии SDK. Однако, максимальное значение для этих типов определено через MAXULONG_PTR в файле basetsd.h, поэтому можно поступить так:

#if !defined(MAXULONG_PTR)
typedef DWORD DWORD_PTR;
#endif

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



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;



Найденные ошибки

Проверено проектов
409
Собрано ошибок
14 072

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять