web-dev-qa-db-fra.com

à quoi sert SDKDDKVer.h?

Tous les projets créés avec MSVC ont stdafx, qui est des en-têtes précompilés, que je connais, mais qu'en est-il de targetver.h? Il comprend SDKDDKVer.h, et je ne trouve pas de quoi parle cet en-tête.

À quoi ça sert ?

21
jokoon

targetver.h et SDKDDKVer.h sont utilisés pour contrôler quelles fonctions, constantes, etc. sont incluses dans votre code à partir des en-têtes Windows, en fonction du système d'exploitation que votre programme doit prendre en charge. Je crois que targetver.h définit par défaut l'utilisation de la dernière version de Windows, sauf si les définitions sont spécifiées ailleurs.

SDKDDKVer.h est le fichier d'en-tête qui définit réellement le #defines qui représentent chaque version de Windows, IE, etc.

11
Andy

Ligne 193 du SDKDDKVer.h (dans le SDK 8.1) indique:

"si les versions ne sont pas déjà définies, par défaut la plus récente"

Ce commentaire fait spécifiquement référence au _WIN32_WINNT et NTDDI_VERSION macros.

Alors..

  1. SDKDDKVer.h applique les valeurs par défaut sauf si les macros ont déjà été définies
  2. le code suivant peut être utilisé pour définir explicitement les macros
    • #define _WIN32_WINNT 0x0601
    • #define NTDDI_VERSION 0x06010000
  3. Chose intéressante, le SDKDDKVer.h le fichier d'en-tête a des valeurs "constantes" définies pour toutes les versions du SDK. Par exemple:
    • #define _WIN32_WINNT_WINXP 0x0501
    • #define _WIN32_WINNT_WIN7 0x0601
    • #define _WIN32_WINNT_WIN8 0x0602
  4. Une convention consiste à définir _WIN32_WINNT et NTDDI_VERSIONdans un fichier d'en-tête appelé TargetVer.h, que vous feriez référence dans votre en-tête précompilé StdAfx.h.

LECTURE SUPPLÉMENTAIRE

3
Pressacco