MSVCで作成されたすべてのプロジェクトには、プリコンパイル済みヘッダーであるstdafxがあります。これは、それらが何であるかを知っていますが、targetver.hについてはどうですか? SDKDDKVer.hが含まれており、そのヘッダーの内容が見つかりません。
これは何のため ?
targetver.h
およびSDKDDKVer.h
は、プログラムでサポートするOSに基づいて、Windowsヘッダーからコードに含める関数、定数などを制御するために使用されます。定義が別の場所で指定されていない限り、targetver.h
はデフォルトで最新バージョンのWindowsを使用するように設定していると思います。
SDKDDKVer.h
は、WindowsやIEなどの各バージョンを表す#defines
を実際に定義するヘッダーファイルです。
SDKDDKVer.h
の193行目(SDK 8.1)は次のように述べています。
"バージョンがまだ定義されていない場合、デフォルトで最新のバージョンに"
このコメントは、特に_WIN32_WINNT
およびNTDDI_VERSION
マクロを参照しています。
そう..
SDKDDKVer.h
は、マクロがすでに定義されていない限り、デフォルト値を適用します#define _WIN32_WINNT 0x0601
#define NTDDI_VERSION 0x06010000
SDKDDKVer.h
ヘッダーファイルには、すべてのSDKバージョンに対して定義された「定数」値があります。例えば:#define _WIN32_WINNT_WINXP 0x0501
#define _WIN32_WINNT_WIN7 0x0601
#define _WIN32_WINNT_WIN8 0x0602
_WIN32_WINNT
と呼ばれるヘッダーファイルでNTDDI_VERSION
とTargetVer.h
を定義することです。これは、コンパイル済みヘッダーStdAfx.h
で参照します。