解决 C2664 “char *strcpy(char *,const char *)”: 无法将参数 2 从“CString”转换为“const char *”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013517122/article/details/83307057

在使用旧工程中的函数时, 在VS 2017上编译出现如上问题, 但是该函数在之前的版本上可以正常编译, 怎么会出现这问题呢?难道不向前兼容, 不应该, 一定是哪里没设置好, 在找资料查询之后, 还是找到了, 记录下, 方便大家也方便自己.

1. 编译错误显示图在这里插入图片描述

根据错误提示, 尝试修改字符集, 应该可以解决.

2. 修改字符集, 采用多字节字符集

在这里插入图片描述
在这里插入图片描述

3. 重新编译

在这里插入图片描述

重新编译, 还是出错, 但已经不是刚才的错误了, 说是函数不安全, 这下就有眉目了, 使用宏告诉编译器不必理会即可.

4. 在预处理器定义中添加宏在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 设置完之后, 重新编译工程, 则不会再报错, 编译通过

在这里插入图片描述

最后, 我再VS 2017之前的版本上又重新试了下工程, 发现之前的版本只需要修改下字符集即可, 而在VS 2017上必须要在预处理器中添加宏定义才可以, 可以得出, VS 2017对代码的安全性提高了很多, 底层又做了很多开关, 限制. 总体来说, 还是很人性化的.

猜你喜欢

转载自blog.csdn.net/u013517122/article/details/83307057