web-dev-qa-db-ja.com

C4996でVisual Studio 2013エラーが発生するのはなぜですか?

Visual Studioの以前のバージョンでは、_sleepやstrncpyなどの関数を使用すると、警告が出力されるだけです。最新バージョンでは、突然エラーになります。

unexpected error

エラーC4996: '_sleep':この関数または変数は、新しいライブラリまたはオペレーティングシステムの機能に置き換えられました。代わりにスリープの使用を検討してください。詳細については、オンラインヘルプを参照してください。

コードの先頭に#pragma warning(disable: 4996)を追加することで無効にできることは知っていますが、VSが他の関数を使用するように強制しているのは非常に迷惑です。この動作を無効にする方法はありますか?

あなたが尋ねる前に、「警告をエラーとして扱う」は無効になっており、すべての警告をオフにしてもエラーになります!

51
Nikolai

どうやら新しいプロジェクトでは、デフォルトで「SDKチェック」が有効になり、これらの警告はエラーとして扱われます。無効にするには、プロジェクトプロパティ->構成プロパティ-> C/C++->一般-> SDLチェック->いいえに進みます。

70
Nikolai

プログラムの最初に入力してください:

#pragma warning(disable : 4996)

以上です。

8

C/C++> Advanced> Disable Specific Warningsで特定の警告番号を無効にすることもできます。

5
Peter Tseng

プロジェクト-> project_nameプロパティ->構成プロパティ-> C/C++->プリプロセッサ->プリプロセッサ定義->編集...行_CRT_SECURE_NO_WARNINGSを追加

1
Adam G.

私が言及したすべてのソースをコンパイルします:

Visual Studioのデフォルトでプロジェクトから安全な警告(_CRT_SECURE_NO_WARNINGS)を削除

使用方法_CRT_SECURE_NO_WARNINGSの使用 に関するkmcnameeの回答

私の問題を解決したビデオ。 https://www.youtube.com/watch?v=qWxGZLjwKL

どうやら、セキュリティ開発ライフサイクル(SDL)は、追加の安全なコード生成機能を有効にすることや、エラーとしてのセキュリティ関連の警告を追加することを含むチェックを推奨しています。

この問題を解決する手順は次のとおりです。

1. Go to Project-> "your project name" Properties
2. Under Configuration Properties, go to C/C++
3. Under C/C++, go to Preprocessor 
4. Select Preprocessor Definitions and click on Edit from the dropdown menu
5. In the blank space fill out _CRT_SECURE_NO_WARNINGS
0
xAditya3393