2013年2月22日 星期五

如何解除VC的 C4996 warning

Visual studio 6 版以後的Compler 對於一些C 函式庫做安全改良(security enhancements),

如:
strcpy()  改良成 strcpy_s()

當你使用 strcyp(), 會產生下列 warning... (很煩...)

warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

消除的方法是:
  1.  加入define 
 
#define _CRT_SECURE_NO_WARNINGS

  若放在程式碼中,要注意放的位置,要放在所有include header之前。
 
  最簡單的方式是放置在preprocessor中( solution exploer右鍵/properies/ C/C++ / preprocessor )
  或是放在 stdafx.h中(if you have)。

2. 加入 編譯指令
 
#pragma warning( disable:4996 )
 
把上述指令放在 .C/.CPP 檔中,呼叫函示之前即可


Apendix:
微軟對於 eliminate deprecation warnings for the older, less secure functions 說明:
http://msdn.microsoft.com/zh-tw/library/8ef0s5kh.aspx

相關secure enhance function 說明:
http://msdn.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx

沒有留言:

張貼留言