Visual Studio 2012諸如此類的問題html
如下爲轉載安全
初次使用VS2010基於C++開發項目碰到的問題及解決方法
一、將過去的工程用VS2010打開的時候。你有可能會遇到一大堆的警告:warning C4996。 ide
好比: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」後綴的函數):
http://msdn2.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx
那麼如何搞定這些警告呢:函數
緣由解釋
這種微軟的警告,主要由於那些C庫的函數,不少函數內部是不進行參數檢測的(包括越界類的),微軟擔憂使用這些會形成內存異常,因此就改寫了一樣功能的函數,改寫了的函數進行了參數的檢測,使用這些新的函數會更安全和便捷。關於這些改寫的函數你不用專門去記憶,由於編譯器對於每一個函數在給出警告時,都會告訴你相應的安全函數,查看警告信息就能夠獲知,在使用時也再查看一下MSDN詳細瞭解。庫函數改寫例子:
mkdir改寫爲 _mkdir
fopen」改寫爲 fopen_s
stricmp改寫爲 stricmp_s
sprintf改寫爲sprintf_sui
strcpy改寫爲strcpy_s
方法一:調用VS2005鼓吹的那些帶「_s」後綴的非標準函數,即在其後加上"_S",如sprintf改成sprintf_s 。
方法二:在文件最開始添加#define _CRT_SECURE_NO_DEPRECATE或#pragma warning(disable:4996) ,這是忽略警告的方法(通常比較少用)。
方法三:幹粹在工程屬性中設置(推薦)。
在工程屬性中設置的方法以下:
對於VC6:
打開Project----settings----Resources----Preprocessor definitions,
添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE這兩個宏。
對於VS系列的版本:
打開項目----項目屬性---配置屬性----C/C++ ----預處理器----預處理定義,
添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE這兩個宏。spa