【发布时间】:2013-03-16 15:16:55
【问题描述】:
我在 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.h 包含替换为 windows 8 等效项 (synchapi.h),但添加“无目标体系结构”错误后仍然出现错误。
奇怪的是,当我在 Windows 7 上的 Visual Studio 2010 上的项目中使用该代码时,它仍然有效。
有人知道为什么会这样吗?
谢谢
【问题讨论】:
-
请编辑您的问题以包含 complete 和 unedited 错误消息。另请指出错误在所提供的来源中的位置。
标签: c++ windows-8 visual-studio-2012 critical-section