VS2010 WIN32工程升级支持C++11功能,切换到VS2015后解决编译报错问题
问题现象:为了支持C++11的mutex、atom锁等新能力,需要切换到VS2015,但是切换后发现编译一些问题总是报winnt.h错误之类的问题,信息如下:
c:\program files (x86)\windows kits\8.1\include\um\winnt.h(539): error C2143: 语法错误: 缺少“;”(在“”的前面)
1>c:\program files (x86)\windows kits\8.1\include\um\winnt.h(539): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\windows kits\8.1\include\um\winnt.h(540): error C2143: 语法错误: 缺少“;”(在“”的前面)
1>c:\program files (x86)\windows kits\8.1\include\um\winnt.h(540): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
解决方法:
需要在编译出错的.C/.CPP文件最前面增加#include <winsock2.h>,有些攻略说增加<windows.h>,发现如果设计socket编程的话,最好不要使用windows.h否则会报socket结构重复定义的错误。