在使用旧工程中的函数时, 在VS 2017上编译出现如上问题, 但是该函数在之前的版本上可以正常编译, 怎么会出现这问题呢?难道不向前兼容, 不应该, 一定是哪里没设置好, 在找资料查询之后, 还是找到了, 记录下, 方便大家也方便自己.
1. 编译错误显示图![在这里插入图片描述](https://img-blog.csdn.net/20181023143242909?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1MTcxMjI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
根据错误提示, 尝试修改字符集, 应该可以解决.
2. 修改字符集, 采用多字节字符集
3. 重新编译
重新编译, 还是出错, 但已经不是刚才的错误了, 说是函数不安全, 这下就有眉目了, 使用宏告诉编译器不必理会即可.
4. 在预处理器定义中添加宏![在这里插入图片描述](https://img-blog.csdn.net/20181023145356215?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1MTcxMjI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
5. 设置完之后, 重新编译工程, 则不会再报错, 编译通过
最后, 我再VS 2017之前的版本上又重新试了下工程, 发现之前的版本只需要修改下字符集即可, 而在VS 2017上必须要在预处理器中添加宏定义才可以, 可以得出, VS 2017对代码的安全性提高了很多, 底层又做了很多开关, 限制. 总体来说, 还是很人性化的.