warning C4996


相信有不少使用VS2005(VS8.0)的人為此所苦吧?

大多都是看到類似這段文字…

 e:\program\test\main.cpp(65) : warning C4996: ‘strcpy’ 已經宣告為取代
c:\program files\microsoft visual studio 8\vc\include\string.h(73) : 請參閱 ‘strcpy’ 的宣告
訊息: ‘This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.’

這個警告主要是在解決程式 CRT(C Run-Time)程式庫的錯誤
MSDN – CRT相關文件
這個錯誤,是個很嚴重的錯誤(至少對我來說)
因為缺少一個標示buffer大小的參數,以至程式都預設為最大(UINT_MAX
常常就因此出現最常見也最麻煩的「緩衝區溢滿」
在2005開始提供更安全的函式(MSDN文件連結

大多更新後的函式都需要使用者傳入buffer的大小,所以相對上也麻煩了一點點(這個或許是很多人想避掉的原因吧!)
倘若是新開發的程式,還是推薦使用新函式來避免這些危機

需要關閉該錯誤訊息的話,無視:

#pragma warning(disable:4996)
 #define _CRT_SECURE_NO_DEPRECATE 1

將這段marco放在檔案裡,不過,這麼做當然是不建議的
其他類似方法請參照以下連結:
VisualC++2005 の警告メッセージについて
SourceMonitor Vc6 vc2005

End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s