title: What does the `Target Platform Version` mean for a VS C++ project?
body: <h2>BACKGROUND</h2>
  <p>As I understand it, in a C++ project:</p>
  <ul>
  <li>Project Properties =&gt; Configuration Properties =&gt; General =&gt; <em>Platform Toolset</em>
  <ul>
  <li>Tells the compiler which SDK to physically compile against.</li>
  <li>For example: v140 will tell Visual Studio 2015 to use the latest and greatest v8.1 Windows SDK</li>
  </ul>
  </li>
  <li><code>_WIN32_WINNT</code>, <code>WINVER</code>, and <code>NTDDI_VERSION</code> macros
  <ul>
  <li>Depending on the underlying operating system, an SDK function can have a different function signature from OS-to-OS.</li>
  <li>SDKs are suppose to be backward compatible. <a href="http://www.kndr.org/windows-sdk-brokenness" rel="noreferrer" title="Windows SDK Brokenness">1</a></li>
  <li>The before mentioned macros enable you to specify which version of a function you wish to compile against.</li>
  </ul>
  </li>
  </ul>
  <h2>MY QUESTION</h2>
  <p>If I compile my application with the following setup:</p>
  <ul>
  <li>project properties =&gt; configuration properties =&gt; General =&gt; <em>Platform Toolset</em>
  <ul>
  <li>set to: <code>v140_xp</code> (Visual Studio 2015 - Windows XP)</li>
  <li>Setting tells compiler to use the 7.1 SDK, which makes sense.</li>
  </ul>
  </li>
  <li>content of: <code>StdAfh.h</code>
  <ul>
  <li><code>#include &lt;WinSDKVer.h&gt;</code></li>
  <li><code>#define _WIN32_WINNT 0x0501</code></li>
  <li><code>#define WINVER 0x0501</code></li>
  <li><code>#define NTDDI_VERSION 0x05010000</code></li>
  <li><code>#include &lt;SDKDDKVer.h&gt;</code></li>
  <li>Macros tell compiler which function signatures to use, which makes sense.</li>
  </ul>
  </li>
  </ul>
  <p>From what I can tell, it looks like <em>Target Platform Version</em> is an suposed to be an alternative to the <code>_WIN32_WINNT</code>, <code>WINVER</code>, and <code>NTDDI_VERSION</code> macros.  The weird thing is, with the above configuration you can set the <em>Target Platform Version</em> to <code>1</code> or <code>99</code>... and the compiler doesn't generate any errors or warnings.</p>
  <p>This this leaves me wondering: <strong>What is the <em>Target Platform Version</em> for?</strong></p>
  <h2>ADDITIONAL CONTEXT</h2>
  <ul>
  <li>Compiler: Visual Studio 2015</li>
  </ul>
  <h2>REFERENCES</h2>
  <ul>
  <li><a href="http://www.kndr.org/windows-sdk-brokenness" rel="noreferrer" title="Windows SDK Brokenness">Windows SDK Brokenness</a></li>
  <li><a href="https://social.msdn.microsoft.com/Forums/SqlServer/en-US/cd712d51-0b3a-4403-b448-e23922b190d2/target-platform-version-general-project-property-on-vs2015?forum=vcgeneral" rel="noreferrer">Target Platform Version general project property on VS2015</a></li>
  <li><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx" rel="noreferrer" title="Using the Windows Headers">Using the Windows Headers</a></li>
  <li><a href="https://stackoverflow.com/questions/1439752/what-is-winver">What is WINVER?</a></li>
  <li><a href="https://msdn.microsoft.com/en-us/library/6sehtctf.aspx" rel="noreferrer" title="Modifying WINVER and _WIN32_WINNT">Modifying WINVER and _WIN32_WINNT</a></li>
  <li><a href="https://stackoverflow.com/questions/37668692/visual-studio-setting-winver-win32-winnt-to-windows-8-on-windows-7">Visual Studio setting WINVER/_WIN32_WINNT to Windows 8 on Windows 7?</a></li>
  </ul>
  <h2>EDIT HISTORY</h2>
  <ul>
  <li>2016/09/21: As per Hans' comment, macros have been updated to reference Windows XP.</li>
  </ul>