vs2012下 error4996
原文鏈接:http://blog.csdn.net/xidianzhimeng/article/details/11457045
分類: VS使用學習 2013-09-09 08:37 24人閱讀 評論(0)收藏 舉報 vs2012 error 4996
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
在vs2012一下的版本是警告,但是在vs2012上編程了錯誤,在創建工程時的不同之處是有一個周期性安全檢查,這個應該是為什么變成錯誤的原因吧。
? ? 解釋:微軟的警告,主要是那些都是C庫的函數,很多函數內部是不進行參數檢測的(包括越界類的),微軟擔心使用這些會造成內存異常,所以就改寫了一下同樣功能的函數,只不過進行了參數的檢測,使用這些新的就可以了。不用特意記,每個函數在給出警告時都會告訴你相應的安全函數,注意一下警告信息就可以了,使用時再 查看一下MSDN。庫函數改寫例子:
????mkdir改寫為 _mkdir
????fopen”改寫為 fopen_s
????stricmp改寫為 stricmp_s
?解決:1> 根據下面的warning提示:參見“fopen”的聲明
????????消息:“This function or variable may be unsafe. Consider using fopen_s instead.?To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
????????所以可以將函數按warning提示的第二句使用fopen_s函數即可:
????????eg:FILE *pFile=fopen("1.txt", "w");
???????????改為:
???????????FILE* pFile;
???????????fopen_s(&pFile, "1.txt", "w");
???????2> 還是根據warning提示的地三句話:use _CRT_SECURE_NO_DEPRECATE
??????????項目|屬性|配置屬性|C/C++|命令行|附加選項,加入【/D "_CRT_SECURE_NO_DEPRECATE" 】(注:加入中括號中完整的內容)
提倡使用這個方法,不可能去修改所有的源碼,在vs2012下變成錯誤,下列方式就不適用了
? ? ? ?3> Properties->configuration properties->c/c++->advanced->disable specific warnings中輸入4996
???????4>?#pragma warning(disable:4996)
總結
以上是生活随笔為你收集整理的vs2012下 error4996的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将自己的类封装为lib的方法
- 下一篇: 关于路上的风景的句子104个