Visual Studio 编译错误【error C4996: 'strcpy': This function or variable may be unsafe. 】的解决方案


#1

诶,标准 C 库里的东西,微软的魔爪也要伸进去了。 还不让你用了,非要禁止你用。咋办?

傻逼微软说, strcpy 不安全。你信么? 至于你信还是不信,反正我是不信了。

怎么取消?

简单, 2分个办法任选一个

1.  #param warning(disable:4996)

2. 更改预处理定义:

    项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加:

        _CRT_SECURE_NO_DEPRECATE

#2

确实不安全,至少得用strcpy_s啊。若纯微软平台代码,考虑用StrSafe.h里的StringCchCopy比C标准库的安全。


#3

用了strcpy_s就不能跨平台了,还不如加个宏定义,去掉这个自作聪明的功能


#4

不跨平台的东西用的不舒坦。


#5

_CRT_SECURE_NO_DEPRECATE是个必须设置的选项!!!


#6

哦,我还以一直以为"security enhanced CRT"的strcpy_s已经进标准库了呢,原来还停留在Windows上然后被标准库否了。 为了可移植,可能确实只有拿宏包一层咯。


#7

_s 的就不能使用。用 c++ 就可以了