各位前辈, 小弟刚接触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.   

    缺少“;” 一般是那个对象没定义(结构体)你找到SYSTEM_POWER_STATUS定义的地方, 再看前面是否有类似下面的语句, 
    #if (_WIN32_WINNT >= 0x0XXXX)这里如果_WIN32_WINNT 这个宏的值不够大, 结构体就不会定义
      

  2.   

    非常感谢zzz3265回答, 最靠近这个POWER API的是#if(WINVER >= 0x0400)..我想问如果改了更大值就可以了?
    但是一般来说这个值应该适用于大部分人吧? 为啥需要自己去修改#if (_WIN32_WINNT  >= 0x0XXXX)的值呢?