我們在用Visual 2008編程時可能經常遇到類似下面的警告:
warning C4996: “sprintf”被聲明爲否決的 c:/program files/microsoft visual studio 8/vc/include/stdio.h(345) : 參見“sprintf”的聲明 消息:“This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
因爲只是警告,我們完全可以忽略不管它,但是總在那看着心裏一定會比較煩,所以得想辦法解決掉。
問題分析:
首先我們得知道這是什麼意思:翻譯過來就是差不多這個意思,sprintf的聲明在VS2005中被認爲是不安全的,讓你使用sprintf_S來代替。不想顯示這個警告可以聲明 _CRT_SECURE_NO_DEPRECATE.這個宏。
解決方法:
一、用VS認爲安全的函數替代那些個過時的函數,一般是在那些過時的函數後面直接加_S ,如sprint變爲sprint_s。詳細的說明請參見《WINDOWS 核心編程》第二章。
二、如果你覺的麻煩的話可以用下面的宏,取消這些個警告顯示:
- #define _CRT_SECURE_NO_DEPRECATE
- #define _CRT_SECURE_NO_WARNINGS
不過還是推薦用第一種方法,因爲是安全的調用。第二種方法雖然簡單,但程序運行還是會存在隱患的,因爲它沒有指定緩存的大小,只是沒有顯示警告罷了。爲了程序的健壯性,還是推薦用第一種方法,雖然用的時候用比較麻煩一點。