Подтвердить что ты не робот

Для чего SDKDDKVer.h?

Весь проект, созданный с помощью MSVC, имеет stdafx, который является предварительно скомпилированным заголовком, который я знаю, что это такое, но как насчет targetver.h? Он включает SDKDDKVer.h, и я не могу найти, что это за заголовок.

Для чего это?

4b9b3361

Ответ 1

targetver.h и SDKDDKVer.h используются для контроля того, какие функции, константы и т.д. включены в ваш код из заголовков Windows, на основе ОС, которую вы хотите поддержать. Я считаю, что targetver.h устанавливает значения по умолчанию для использования последней версии Windows, если они не указаны в другом месте.

SDKDDKVer.h - это заголовочный файл, который фактически определяет #defines, который представляет каждую версию Windows, IE и т.д.

Ответ 2

В строке 193 SDKDDKVer.h (в SDK 8.1) указано:

", если версии еще не определены, по умолчанию для большинства текущих

Этот комментарий специально ссылается на макросы _WIN32_WINNT и NTDDI_VERSION.

Итак..

  • SDKDDKVer.h применяет значения по умолчанию, если макросы уже не определены
  • следующий код может использоваться для явного определения макросов
    • #define _WIN32_WINNT 0x0601
    • #define NTDDI_VERSION 0x06010000
  • Интересно, что заголовочный файл SDKDDKVer.h имеет "постоянные" значения, определенные для всех версий SDK. Например:
    • #define _WIN32_WINNT_WINXP 0x0501
    • #define _WIN32_WINNT_WIN7 0x0601
    • #define _WIN32_WINNT_WIN8 0x0602
  • Одно соглашение - определить _WIN32_WINNT и NTDDI_VERSION в файле заголовка TargetVer.h, который вы бы указали в своем предварительно скомпилированном заголовке StdAfx.h.

ДОПОЛНИТЕЛЬНОЕ ЧТЕНИЕ