今天把工程全部转换成了vs 2013,主要是通过vs2013下的一些动静态代码检查功能。转换成vs 2013以后,发现编译器的检查更加严格了。一些警告会被视为异常,例如:
OSVERSIONINFO sInfo; sInfo.dwOSVersionInfoSize = sizeof(sInfo); GetVersionEx(&sInfo);
这段代码在vs 2013默认语法检查规则中是编译无法通过的。
查看msdn对GetVersionEx的说明(https://msdn.microsoft.com/zh-cn/library/ms724451(v=vs.85).aspx)
[GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper APIs]
该api由于不安全,在windows 8.1中会有一组函数进行对其替代。同时,对stl和编译预处理的检查将开始更为严格。后续需要对windows 8.1的api和之前windows的api进行差异性了解。通过可得知vs 2013的设计就是为了操作系统而准备的,有意或无意的改变程序员的部分编程习惯。