2012-05-10 21 views
19

Wszystkie projekty utworzone za pomocą MSVC mają stdafx, który jest prekompilowany nagłówków, które wiem, co one są, ale co z targetver.h? Obejmuje SDKDDKVer.h i nie mogę znaleźć tego, o czym jest ten nagłówek.do czego służy SDKDDKVer.h?

Po co to jest?

+0

Głównie definiuje '_WIN32_WINNT' i' WINVER'. Robi inne rzeczy, ale to jest najważniejsze zadanie. –

Odpowiedz

10

targetver.h i SDKDDKVer.h służą do sterowania jakie funkcje, stałe, itp są zawarte w kodzie z nagłówkami Windows w oparciu o system operacyjny, który chcesz program do obsługi. Sądzę, że targetver.h ustawia domyślnie używanie najnowszej wersji systemu Windows, chyba że definicje są określone gdzie indziej.

SDKDDKVer.h jest nagłówek pliku, który faktycznie definiuje #defines które reprezentują każdą wersją systemu Windows, IE, itp

+3

Plik 'targetver.h' jest generowany automatycznie podczas tworzenia projektu i zawiera tylko dwa wiersze:' #pragma once' i '#include ', więc w zasadzie nie robi nic, co samo w sobie SDKDDKVer.h nie robi .. – d7samurai

+0

@ d7samurai cóż, domyślnie nic nie robi, ale możesz określić wersję docelową w 'targetver.h', a powinieneś to zrobić przed wywołaniem' SDKDDKVer.h'. To tylko plik, który pozwala to zrobić. –

2

Linia 193 SDKDDKVer.h (w SDK 8.1) stwierdza:

„jeśli wersje aren 't już zdefiniowane, domyślne dla najbardziej aktualnych "

Ten komentarz odnosi się konkretnie do makr _WIN32_WINNT i NTDDI_VERSION.

Więc ..

  1. SDKDDKVer.h zastosowanie wartości domyślnych, chyba że makra zostały już zdefiniowane
  2. następujący kod może być użyty jawnie definiować makra
    • #define _WIN32_WINNT 0x0601
    • #define NTDDI_VERSION 0x06010000
  3. Co ciekawe, plik nagłówkowy SDKDDKVer.h ma "stałe" wartości zdefiniowane dla wszystkich wersji pakietu SDK. Na przykład:
    • #define _WIN32_WINNT_WINXP 0x0501
    • #define _WIN32_WINNT_WIN7 0x0601
    • #define _WIN32_WINNT_WIN8 0x0602
  4. Jeden konwencja jest zdefiniowanie _WIN32_WINNT i NTDDI_VERSION w pliku nagłówkowym nazywa TargetVer.h, które można odwołać w prekompilowany nagłówku StdAfx.h.

addtional CZYTANIE

+0

Znakomita, użyteczna odpowiedź! Szkoda, że ​​te stałe nie są dostępne przed dodaniem ''. – Liviu