24 Stimmen

Wofür ist SDKDDKVer.h?

Alle Projekte, die mit MSVC erstellt wurden, haben stdafx, das sind vorkompilierte Header, von denen ich weiß, was sie sind, aber was ist mit targetver.h? Es enthält SDKDDKVer.h, und ich kann nicht finden, was ist, dass Header über.

Wozu ist das gut?

13voto

Andy Punkte 29060

targetver.h y SDKDDKVer.h werden verwendet, um zu steuern, welche Funktionen, Konstanten usw. aus den Windows-Headern in Ihren Code aufgenommen werden, je nachdem, welches Betriebssystem Sie mit Ihrem Programm unterstützen wollen. Ich glaube, dass targetver.h setzt standardmäßig die neueste Version von Windows ein, sofern die Defines nicht an anderer Stelle angegeben sind.

SDKDDKVer.h ist die Header-Datei, die die #defines die für jede Version von Windows, IE usw. stehen.

3voto

Pressacco Punkte 2666

Zeile 193 der SDKDDKVer.h (in SDK 8.1) heißt es:

"wenn die Versionen nicht bereits definiert sind, wird die aktuellste Version verwendet"

Dieser Kommentar bezieht sich speziell auf die _WIN32_WINNT y NTDDI_VERSION Makros.

Also

  1. SDKDDKVer.h wendet Standardwerte an, sofern die Makros nicht bereits definiert wurden
  2. kann der folgende Code verwendet werden, um die Makros explizit zu definieren
    • #define _WIN32_WINNT 0x0601
    • #define NTDDI_VERSION 0x06010000
  3. Interessant ist, dass die SDKDDKVer.h Header-Datei hat "konstante" Werte für alle SDK-Versionen definiert. Zum Beispiel:
    • #define _WIN32_WINNT_WINXP 0x0501
    • #define _WIN32_WINNT_WIN7 0x0601
    • #define _WIN32_WINNT_WIN8 0x0602
  4. Eine Konvention ist es, zu definieren _WIN32_WINNT y NTDDI_VERSION in einer Header-Datei namens TargetVer.h , auf die Sie in Ihrem vorkompilierten Header verweisen würden StdAfx.h .

ZUSÄTZLICHE LEKTÜRE

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X