为什么GetSystemTimes#if出winbase.h?

Ed *_* S. 1 c c++ winapi

因此,声明GetSystemTimeswinbase.h(我的机器上,Windows 7的VS2005)

#if _WIN32_WINNT >= 0x0501

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

#endif
Run Code Online (Sandbox Code Playgroud)

当然,我可以#define _WIN32_WINNT 0x0501,但这似乎不对,我无法找到解释为什么会出现这种情况以及我的替代方案.任何人都有一些见解吗?

Ada*_*eld 6

#if已被删除,因为它直到Windows NT v5.01,AKA Windows XP才被添加到API中.您的程序应该是#define符号_WIN32_WINNT到最小目标Windows版本的十六进制值:请参阅使用Windows标头.

如果您没有定义_WIN32_WINNT,它会假定您的目标是最低的公分母,并且它不提供更新的API功能.因此,如果你想使用它们,你需要定义_WIN32_WINNT一个合适的值并理解你的代码不会在旧版本的Windows上运行,这通常很好 - 没有人会抱怨你的代码不能在Windows上运行98.