1

GetSystemTimesしたがって、 inの宣言winbase.h(私のマシンでは、Windows 7 VS2005)

#if _WIN32_WINNT >= 0x0501

BOOL
WINAPI
GetSystemTimes(
    __out_opt LPFILETIME lpIdleTime,
    __out_opt LPFILETIME lpKernelTime,
    __out_opt LPFILETIME lpUserTime
    );

#endif

確かに、私はただできます#define _WIN32_WINNT 0x0501が、それは正しくないようで、なぜこれが当てはまるのか、そして私の選択肢が何であるのかについての説明を見つけることができません。誰かがここでいくつかの洞察を持っていますか?

4

3 に答える 3

6

これ#ifは、Windows NT v5.01、別名WindowsXPまでAPIに追加されなかったために削除されました。プログラムは、対象となるWindowsの最小バージョンの16進値#defineの記号を使用する必要があります。 「Windowsヘッダーの使用」を参照してください。_WIN32_WINNT

を定義しない場合は_WIN32_WINNT、最小公分母をターゲットにしていると見なされ、新しいAPI機能は提供されません。したがって、それらを使用する場合は_WIN32_WINNT、適切な値に定義し、コードが古いバージョンのWindowsでは実行されないことを理解する必要があります。これは通常は問題ありません。コードがWindowsで実行されないと文句を言う人は誰もいません。 98。

于 2012-05-08T18:49:16.783 に答える
3

MSDNのドキュメントによると、あなたが言及した可能性は意図された使用法です。奇妙に思えるかもしれませんが、この方法では、オペレーティングシステムの最小バージョンが異なるプラットフォームを対象としたプロジェクトを構築できるため、ターゲットマシンでWindowsAPI関数が使用できない場合でも驚かないでください。

于 2012-05-08T18:44:30.953 に答える
-1

GetSystemTimes()で宣言Winbase.h

#if _WIN32_WINNT >= 0x0501           // look at this

BOOL
WINAPI
GetSystemTimes(
    LPFILETIME lpIdleTime,
    LPFILETIME lpKernelTime,
    LPFILETIME lpUserTime
    );

#endif // (_WIN32_WINNT >= 0x0501)

次のようなインクルードを使用します。

#define _WIN32_WINNT 0x0501
#include <Windows.h>
于 2013-04-25T08:38:04.650 に答える