我使用某些Windows功能在VS2013中编写Timer类,但Visual Studio甚至不识别它们,包括windows.h标题。
Win32Timer.h
#pragma once
#include "Timer.h"
#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif
#if !defined(NOMINMAX) && defined(_MSC_VER)
# define NOMINMAX
#endif
#include <windows.h>
class Win32Timer : public Timer {
public:
Win32Timer();
~Win32Timer();
void reset() override;
ulong getMilliseconds() override;
ulong getMillisecondsCPU() override;
ulong getMicroseconds() override;
ulong getMicrosecondsCPU() override;
protected:
ulong getTime() override;
private:
clock_t m_StartClock;
DWORD m_StartTick;
LONGLONG m_LastTime;
LARGE_INTEGER m_StartTime;
LARGE_INTEGER m_Frequency;
};
Timer.h(Prerequisites.h只是一堆前向声明和STL标题)
#pragma once
#include "Prerequisites.h"
class Timer {
public:
Timer();
~Timer();
virtual void reset() = 0;
virtual ulong getMilliseconds() = 0;
virtual ulong getMillisecondsCPU() = 0;
virtual ulong getMicroseconds() = 0;
virtual ulong getMicrosecondsCPU() = 0;
protected:
virtual ulong getTime();
};
当我尝试编译时,我会为使用windows&#39;的每个成员变量获得以下错误:数据类型。
1&gt; c:\ users \ jean \ documents \ visual studio 2013 \ projects \ drac \ drac \ win32timer.h(33):错误C2146:语法错误:缺少&#39 ;;&#39;在标识符'm_LastTime&#39;
之前1&gt; c:\ users \ jean \ documents \ visual studio 2013 \ projects \ drac \ drac \ win32timer.h(33):错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int
如果我点击进入定义,VS会将我带到定义数据类型的正确位置,但无法在编译时识别它。问题是什么?
如果我包含<winnt.h>
而不是<windows.h>
,则会识别出类型,但我会收到fatal error C1189: #error : "No Target Architecture"
。