2016-05-21 61 views
0

它的第一次我使用WINAPI,并与像SleepConditionVariableCS,功能WakeConditionVariableWaitForMultipleObjects的InitializeConditionVariable Eclipse IDE的告诉我,他们没有在声明这个范围。条件变量函数并没有在此范围内声明

所有这些都理应包含在相同的lib WINDOWS.H,所以我不知道是不是因为其他功能,如了ExitThreadReleaseSemaphoreWaitForSingleObject的是没有任何问题的运行有什么缺点。

它可能是我的c + +版本的一些问题?或者它包含任何其他库包含?

感谢

+0

你使用的是Windows 8或更新版本?根据MSDN的说法,大多数这些函数都被移到了Windows 8中的Synchapi.h中。 –

+1

@MilesBudnek:在文档中没有明确说明这一点,但仍需要包含* Windows.h *(不是* WinBase.h *或* Synchapi.h *)。由于这些是SDK的一部分(而不是操作系统),所以OP的使用操作系统并不令人感兴趣。有趣的是SDK版本。 – IInspectable

回答

4

SleepConditionVariableCS的文档(或任何其他Windows API调用)告诉你的最低支持客户端和服务器操作系统。 API调用根据您的目标平台设置进行有条件声明。

您可以通过设置某些预处理器宏来控制目标平台(有关信息,请参阅Using the Windows Headers)。你的情况,你需要添加

#define WINVER 0x0600 

包括WINDOWS.H之前,以适用于Windows Vista和更高版本。通常的做法是在命令行中定义预处理器宏,以便在所有编译单元中使用一致的环境。