(轉)Visual 2008中 warning C4996的解決方法

我們在用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 核心編程》第二章。
二、如果你覺的麻煩的話可以用下面的宏,取消這些個警告顯示:

  1. #define _CRT_SECURE_NO_DEPRECATE 
  2. #define _CRT_SECURE_NO_WARNINGS

不過還是推薦用第一種方法,因爲是安全的調用。第二種方法雖然簡單,但程序運行還是會存在隱患的,因爲它沒有指定緩存的大小,只是沒有顯示警告罷了。爲了程序的健壯性,還是推薦用第一種方法,雖然用的時候用比較麻煩一點。

 

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章