1. 程式人生 > >編譯器警告(等級 3)C4996

編譯器警告(等級 3)C4996

在編譯時出現瞭如下錯誤:

然後直接點選藍色字元,出現如下介面:

編譯器遇到棄用宣告。

此警告或錯誤有幾種可能的含義。

C4996當編譯器遇到函式或變數標記為時發生不推薦使用

C4996 occurs when the compiler encounters a function or variable that is marked as deprecated. 多個函式、成員函式、模板函式和 Visual Studio 的庫中的全域性變數標記為已棄用。 這些函式可能具有不同的首選名稱,可能不安全或具有更加安全的變體,或可能已過時。 錯誤訊息可能包括已棄用函式或全域性變數的建議替換項。 可以用
warning
雜注或 /wd4996 命令列選項關閉此警告。 你也可以使用前處理器巨集關閉棄用警告的某些類。

此項的 POSIX 名稱已被否決。請改用 ISO C 和 c + + 符合的名稱︰ new_name。請參閱聯機幫助的詳細資訊。

CRT 中的一些 POSIX 函式已重新命名,以符合適用於實現定義的全域性函式名稱的 C99 和 C++03 規則。 在大多數情況下,前導下劃線已新增到 POSIX 函式名稱,以建立符合標準的名稱。 編譯器會發出對原始函式名稱的棄用警告,並建議首選名稱。 僅會棄用原始名稱,而不會棄用函式本身。 若要關閉這些函式的棄用警告,請定義前處理器巨集 _CRT_NONSTDC_NO_WARNINGS

。 你可以通過包括選項 /D_CRT_NONSTDC_NO_WARNINGS在命令列定義此巨集。 若要在 Visual Studio 中定義此巨集,請開啟專案的 “屬性頁”對話方塊。 展開“配置屬性” 、“C/C++” 、“前處理器” 。 在“前處理器定義” 中,新增 _CRT_NONSTDC_NO_WARNINGS。 選擇“確定” 進行儲存,然後重新生成專案。 若要僅在特定原始檔中定義此巨集,請將行 #define _CRT_NONSTDC_NO_WARNINGS 新增到包括標標頭檔案的任意行之前。

此函式或變數可能不安全。請考慮使用safe_version相反。若要禁用棄用,請使用 _CRT_SECURE_NO_WARNINGS。請參閱聯機幫助的詳細資訊。

為了支援更加安全的新函式,已棄用某些 CRT 和標準 C++ 庫函式和全域性變數。 編譯器會發出對這些函式的棄用警告,並建議首選函式。 若要在 CRT 中關閉這些函式的棄用警告,請定義 _CRT_SECURE_NO_WARNINGS。 若要關閉有關棄用的全域性變數的警告,請定義 _CRT_SECURE_NO_WARNINGS_GLOBALS。 有關這些已棄用的函式和全域性函式的詳細資訊,請參閱CRT 中的安全功能安全庫︰ c + + 標準庫

使用引數可能不安全的函式呼叫此呼叫依靠呼叫方檢查傳遞的值正確。若要禁用此警告,請使用 -D_SCL_SECURE_NO_WARNINGS。有關如何使用 Visual c + + 檢查迭代器,請參閱文件

某些 C++ 標準庫模板函式不會檢查引數的正確性。 此警告有助於標識這些函式的用法。 若要關閉這些函式的警告,請定義 _SCL_SECURE_NO_WARNINGS。 有關更多資訊,請參見 Checked Iterators

此函式或變數已經被取代的更新版本的庫或作業系統功能。請考慮使用new_item相反。請參閱聯機幫助的詳細資訊。

某些庫函式和全域性變數由於過時已棄用。 可能會在未來版本的庫中刪除這些函式和變數。 編譯器會發出對這些項的棄用警告,並建議首選備用項。 若要關閉這些項的棄用警告,請定義 _CRT_OBSOLETE_NO_WARNINGS。 有關詳細資訊,請參閱棄用的函式或變數的文件。

在 MFC 或 ATL 程式碼中的各種訊息

CLR 程式碼中的封送處理錯誤

在使用封送處理庫時也可能會發生 C4996。 在這種情況下,C4996 是錯誤,而非警告。 使用 marshal_as 在需要 marshal_context Class的兩種資料型別之間進行轉換時,會發生此錯誤。 如果封送處理庫不支援轉換,您也會收到此錯誤。 有關封送處理庫的詳細資訊,請參閱 Overview of Marshaling in C++

示例生成 C4996

在第一個示例中,為在其中聲明瞭函式的行和在其中使用了函式的行生成 C4996

之後對著錯誤的提示自己找就行了,我的這個錯誤加上#define  _CRT_SECURE_NO_WARNINGS就可以了!