Для чего SDKDDKVer.h?
Весь проект, созданный с помощью MSVC, имеет stdafx, который является предварительно скомпилированным заголовком, который я знаю, что это такое, но как насчет targetver.h? Он включает SDKDDKVer.h, и я не могу найти, что это за заголовок.
Для чего это?
Ответы
Ответ 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
.
ДОПОЛНИТЕЛЬНОЕ ЧТЕНИЕ