Visual Studio不能使用strcmp, strcpy等,否则报错

哈利_蜘蛛侠 2014-03-22 10:57:11
只能使用strcmp_s, strcpy_s等。有没有办法使用前面的版本呢?
...全文
3023 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈利_蜘蛛侠 2014-09-13
  • 打赏
  • 举报
回复
引用 3 楼 neustar1 的回复:
[quote=引用 楼主 u011873969 的回复:] 只能使用strcmp_s, strcpy_s等。有没有办法使用前面的版本呢?
怎么可能个报错呢,最多也就是警告,可别是你这个设置警告就报错那自然编译吧不过去。[/quote] 貌似最科学的还是使用_s版本,因为今后也不大可能会用VS以外的软件编程。
movsd 2014-03-24
  • 打赏
  • 举报
回复 1
引用 19 楼 WizardOz 的回复:
VS真是神经病啊
同意!
赵4老师 2014-03-24
  • 打赏
  • 举报
回复
#pragma warning(disable:4996)
line_us 2014-03-24
  • 打赏
  • 举报
回复
还让不让人活呀,strcmp, strcpy都报错。
WizardOz 2014-03-24
  • 打赏
  • 举报
回复
VS真是神经病啊
紫色动力 2014-03-24
  • 打赏
  • 举报
回复
因为这是老函数,完全由程序员负责安全检查,所以VS认为不安全,会给出警告。应该不会报错。
幻夢之葉 2014-03-24
  • 打赏
  • 举报
回复
引用 4 楼 u011873969 的回复:
[quote=引用 3 楼 neustar1 的回复:] [quote=引用 楼主 u011873969 的回复:] 只能使用strcmp_s, strcpy_s等。有没有办法使用前面的版本呢?
怎么可能个报错呢,最多也就是警告,可别是你这个设置警告就报错那自然编译吧不过去。[/quote] 不过sprintf是用不了的,只能用sprintf_s[/quote] 这不是编译器的问题,是其他原因吧,这些都是警告级别的!!
勤奋的小游侠 2014-03-24
  • 打赏
  • 举报
回复
引用 14 楼 u011873969 的回复:
[quote=引用 12 楼 lovesmiles 的回复:] 那你应该是写错参数了,sprintf是三个参数,sprintf_s是四个参数。把第二个参数,删掉。就可以用sprintf了。
这样的语句编译通不过: sprintf(buffer, "The 1 second timer has fired %d times", ++counter1);[/quote] 把出错提示贴上来
agamenon 2014-03-24
  • 打赏
  • 举报
回复
原来如此 原来如此
mzz_810 2014-03-24
  • 打赏
  • 举报
回复
哥不用strcmp,哥用CompareString; 哥不用strcpy,哥用StringCchCopy; 哥不用sprintf,哥用StringCchPrintf; ……
哈利_蜘蛛侠 2014-03-24
  • 打赏
  • 举报
回复
引用 12 楼 lovesmiles 的回复:
那你应该是写错参数了,sprintf是三个参数,sprintf_s是四个参数。把第二个参数,删掉。就可以用sprintf了。
这样的语句编译通不过: sprintf(buffer, "The 1 second timer has fired %d times", ++counter1);
「已注销」 2014-03-23
  • 打赏
  • 举报
回复
应该是预编译指针方面的问题,#9楼方法可用
wanren13 2014-03-23
  • 打赏
  • 举报
回复
引用 8 楼 woshihuating 的回复:
看编译提示 在预处理器上 加个 _CRT_SECURE_NO_WARNINGS 或者修改 /SDL /GS 不检测安全
如楼上所说,LZ只要经过设置就不会再有警告了
woshihuating 2014-03-23
  • 打赏
  • 举报
回复
看编译提示 在预处理器上 加个 _CRT_SECURE_NO_WARNINGS 或者修改 /SDL /GS 不检测安全
buyong 2014-03-23
  • 打赏
  • 举报
回复
引用 4 楼 u011873969 的回复:
[quote=引用 3 楼 neustar1 的回复:] [quote=引用 楼主 u011873969 的回复:] 只能使用strcmp_s, strcpy_s等。有没有办法使用前面的版本呢?
怎么可能个报错呢,最多也就是警告,可别是你这个设置警告就报错那自然编译吧不过去。[/quote] 不过sprintf是用不了的,只能用sprintf_s[/quote] 你是不是把参数写错
ningto.com 2014-03-23
  • 打赏
  • 举报
回复
你用vs最好按照它的要求来,要不你就用Linux,就没有这个问题了。
FancyMouse 2014-03-23
  • 打赏
  • 举报
回复
#pragma disable掉。初学没必要纠结这种问题。
zhcosin 2014-03-23
  • 打赏
  • 举报
回复 1
你仔细看,那是警告而不是错误,微软希望你用它的 strcpy_s 所以才会有此警告。
勤奋的小游侠 2014-03-23
  • 打赏
  • 举报
回复
引用 11 楼 u011873969 的回复:
[quote=引用 7 楼 buyong 的回复:] 你是不是把参数写错
sprintf是按照书上写的,报错,加上_s就好了。 [/quote] 那你应该是写错参数了,sprintf是三个参数,sprintf_s是四个参数。把第二个参数,删掉。就可以用sprintf了。
哈利_蜘蛛侠 2014-03-23
  • 打赏
  • 举报
回复
引用 7 楼 buyong 的回复:
你是不是把参数写错
sprintf是按照书上写的,报错,加上_s就好了。
加载更多回复(4)

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧