各位前辈, 小弟刚接触ATL不久. 最近一直碰到一个问题, 就是即使刚新建好一个ATL项目. 立刻进行编译. 总会报winbase.h出错. 不知道怎么解决, 请各位前辈帮忙...
具体编译出错情况如下:错误 1 error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面) c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
而出错的那一行只是结构体. 找不出有什么不正确的地方.typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE Reserved1;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
具体编译出错情况如下:错误 1 error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面) c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
而出错的那一行只是结构体. 找不出有什么不正确的地方.typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE Reserved1;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
#if (_WIN32_WINNT >= 0x0XXXX)这里如果_WIN32_WINNT 这个宏的值不够大, 结构体就不会定义
但是一般来说这个值应该适用于大部分人吧? 为啥需要自己去修改#if (_WIN32_WINNT >= 0x0XXXX)的值呢?