Что означает «версия целевой платформы» для проекта VS C ++?

ФОН

Как я понимаю, в проекте C ++:

Свойства проекта => Свойства конфигурации => Общие =>Набор инструментов платформыСообщает компилятору, с каким SDK физически компилироваться.Например: v140 скажет Visual Studio 2015 использовать последний и самый лучший v8.1 Windows SDK_WIN32_WINNT, WINVER, а такжеNTDDI_VERSION макросВ зависимости от базовой операционной системы функция SDK может иметь различную сигнатуру функции от ОС к ОС.Предполагается, что SDK обратно совместимы.1Упомянутые выше макросы позволяют вам указать, с какой версией функции вы хотите скомпилировать.МОЙ ВОПРОС

Если я скомпилирую свое приложение со следующей настройкой:

свойства проекта => свойства конфигурации => общие =>Набор инструментов платформыустановлен в:v140_xp (Visual Studio 2015 - Windows XP)Настройка говорит компилятору использовать 7.1 SDK, что имеет смысл.содержание:StdAfh.h#include <WinSDKVer.h>#define _WIN32_WINNT 0x0501#define WINVER 0x0501#define NTDDI_VERSION 0x05010000#include <SDKDDKVer.h>Макросы сообщают компилятору, какие сигнатуры функций использовать, что имеет смысл.

Из того, что я могу сказать, похоже,Версия целевой платформы является альтернативой_WIN32_WINNT, WINVER, а такжеNTDDI_VERSION макросы. Странная вещь, с вышеупомянутой конфигурацией вы можете установитьВерсия целевой платформы в1 или же99... и компилятор не генерирует никаких ошибок или предупреждений.

Это заставляет меня задуматься:ЧтоВерсия целевой платформы за?

ДОПОЛНИТЕЛЬНЫЙ КОНТЕКСТКомпилятор: Visual Studio 2015РЕКОМЕНДАЦИИWindows SDK сломанОбщее свойство проекта версии целевой платформы на VS2015Использование заголовков WindowsЧто такое WINVER?Изменение WINVER и _WIN32_WINNTVisual Studio устанавливает WINVER / _WIN32_WINNT для Windows 8 в Windows 7?РЕДАКТИРОВАТЬ ИСТОРИЮ2016/09/21: Согласно комментарию Ганса, макросы были обновлены для ссылки на Windows XP.

Ответы на вопрос(0)

Ваш ответ на вопрос