去掉VS2005的警告提示

2021-06-12 06:49:29 字數 2691 閱讀 4621

將過去的工程用vs2005開啟的時候。你有可能會遇到一大堆的警告:warning c4996。

比如:warning c4996: 'sprintf': this function or variable may be unsafe. consider using sprintf_s instead. to disable deprecation, use _crt_secure_no_warnings.

原因是visual c++ 2005使用了更加安全的run-time library routines。

新的security crt functions(就是那些帶有「_s」字尾的函式):

那麼如何搞定這些警告呢:

方法一:手工將原來的舊函式替換成新的security crt functions。

方法二:遮蔽這個警告。

在預編譯標頭檔案stdafx.h裡(注意:一定要在沒有include任何標頭檔案之前)定義下面的巨集:

#define _crt_secure_no_deprecate

或者#param warning(disable:4996)

方法二沒有使用新的更安全的crt函式,顯然不是乙個值得推薦的方法,可是你又不想乙個乙個地改。

那麼還有乙個更方便的方法:

在預編譯標頭檔案stdafx.h裡(同樣要在沒有include任何標頭檔案之前)定義下面的巨集:

#define _crt_secure_cpp_overload_standard_names 1

在鏈結的時候便會自動將舊函式替換成security crt functions。

注意:這個方法雖然使用了新的函式,但是不能消除警告(原因見紅字),你還得同時使用方法二。。。

在網上搜尋到的最常用的解決方案,那就是定義

_crt_secure_no_deprecate

和_scl_secure_no_deprecate

來禁止vc2005

對此產生警告

(依然使用的是非安全庫!

0顯然並不是乙個好的解決方案

)。而且如果使用了

atl,

則還需要定義

_atl_secure_no_deprecate

,使用了

mfc則需要定義

_afx_secure_no_deprecate

。然而儘管如此,更好的解決方案只需要定義乙個巨集

_crt_secure_cpp_overload_standard_names,

那麼vc

將會自動替換使用他們的

safe library

來代替c/c++

標準庫(

如strcat

將被strcat_f

來取代)。

即使使用了

_crt_secure_cpp_overload_standard_names

,**將依舊不夠安全

:(,

對此,ms

提出了如下

10點建議

:1.

不要認為

strcpy_s

和strncpy_s(

以及其他的字串函式

)(在空間不夠的時候

)會自動終止拷貝

(truncate

截斷,不截斷則意味著溢位

).如果需要自動截斷,請使用

strncpy_s (

同時使用

_truncate

作為長度引數)。

2. 記住

fopen_s

預設是獨佔模式。如需共享使用檔案,應該使用

_sopen

。3.

別忘了_dupenv_s,

它將比_getenv_s

更容易使用,因為它能自動分配乙個正確長度的記憶體

(buffer)

。4.

在scanf_s

中小心引數順序。

5. 確定

printf_s

中格式字串的正確。

6. 使用

_countof(x)

來取代sizeof(x)/sizeof(element). _countof

將會正確的計算元素個數,而且如果

x是乙個指標,編譯器將會發出乙個警告

(來提醒程式設計師

,僅針對

c++編譯

)7.

記住所有的

sizes(大小,

非長度)

都是使用

characters(

字元,unicode

下乙個字元佔2個

byte)

作為單位,而不是

bytes(

位元組).

8. 記住所有的

sizes(

大小,非長度,緣由同上

)包含了字串結束符

'\0'(

即別忘了很多情況下

size

需要+1)

。9.

除錯的時候監視資料

0xfd。(

在除錯版本下

)0xfd

將會被填充在資料

(buffer

,通常是字串

)的結尾處。如果執行非你所願,可能會得到乙個長度錯誤。

10.

檢查所有的錯誤。

許多新函式相比舊函式

,能返回(表示

)錯誤資訊

(的數值)。

VS2005驗證控制項

驗證控制項,這個對我們來說是比較重要的,雖然他不高深,可用處是很大的,常見與資訊收集 其實他也沒有多少要講的,主要有以下幾個方面 他可以被定義外觀 廢話 驗證程式的顯示方式,是靜態還是動態 注意第乙個驗證控制項的兩種 分組顯示錯誤資訊 自定義服務端驗證 自定義客戶端驗證 正規表示式 required...

vs2005配置選項

前天剛在csdn上面看到乙個問題 vs 2005開始的時候有個習慣設定 就是 c vb.net還是 我選錯了 想修改 怎麼辦 連線為 很興奮的衝上去把這個問題答了,輕鬆的拿了15分 整道題目才20分 今天又看到乙個問題 vs2005 剛啟動的那個介面,有很多配置選項的,比如 vs team,vs c...

VS2005常用外掛程式

1.visual assist 強烈推薦 va從5.0一直到現在的vax,功能越來越強大,除了以前版本中的自動識別各種關鍵字,系統函式,成員變數,自動給出輸入提示,自動更正大小寫錯誤,自動標示錯誤等等以外,最新的版本中還在 workspace 視窗中加入乙個va view,可以更方便的查詢工程中的檔...