Если вам нужно при компиляции определить, какая основная версия ОС Windows SDK используется, вы можете использовать макрос VER_PRODUCTBUILD, который определен в ntverp.h. Например:
#include <ntverp.h>
#if VER_PRODUCTBUILD > 9600
// Windows 10+ SDK code goes here
#else
// Windows 8.1- SDK code goes here
#endif
В большинстве случаев в этом нет необходимости, поскольку продукт должен быть спроектирован для сборки с определенной платформой SDK. Но для некоторых крупных продуктов может потребоваться поддержка нескольких платформ SDK. Это может быть особенно полезно при переходе от одного к другому. Если в заголовочном файле есть ошибка (например, фиктивная "#pragma pop" в версии bthledef.h для Windows 8.1 SDK), возможно, вам придется обойти эту ошибку, но не включать обходной путь при использовании Windows 10 SDK или выше. Этот метод также можно использовать для предоставления полезных сообщений об ошибках, если требуемая версия SDK не установлена.
Обратите внимание, что VER_PRODUCTBUILD предоставляет только информацию о основной версии ОС, например, 8.1 против 10. Это означает, что VER_PRODUCTBUILD становится все более бесполезным, так как он не меняется с обновлениями для Windows 10. Поэтому более вероятная вещь - sdkddkver. h и NTDDI_WIN10_ * макросы. Начиная с Windows 10.0.17763.0 SDK NTDDI_WIN10_RS5 теперь определен. Итак, напишите код так:
#include <sdkddkver.h>
#if !defined(NTDDI_WIN10_RS5)
#error Windows 10.0.17763.0 SDK is required
#endif