我有一个编译问题,我无法在 Visual Studio 2012 上的 c++ 程序中解释。错误出现在程序的几个地方,这里是一个例子:
#ifndef __WINMUTEX_H__
# define __WINMUTEX_H__
# ifdef _WIN32
# include <windows.h>
namespace Thread
{
class WinMutex
{
public:
WinMutex();
~WinMutex();
void lock();
void unlock();
bool trylock();
private:
CRITICAL_SECTION _mutex;
};
typedef WinMutex Mutex;
}
# endif
#endif
编译器给了我一个错误(C2146)。基本上编译器似乎没有找到 CRITICAL_SECTION 标识符,Intellisense 也没有。正如我所说,此错误发生在程序的几个部分中,不仅针对 CRITICAL_SECTION,还针对 HANDLE 甚至 DWORD。
我尝试用 Windows 8 等效项 (synchapi.h) 替换 windows.h 包含,但添加“无目标体系结构”错误后我仍然收到错误。
奇怪的是,当我在 Windows 7 上的 Visual Studio 2010 项目中使用该代码时,它可以工作。
任何人都知道为什么会这样?
谢谢