Visual Studioの以前のバージョンでは、_sleepやstrncpyなどの関数を使用すると、警告が出力されるだけです。最新バージョンでは、突然エラーになります。
エラーC4996: '_sleep':この関数または変数は、新しいライブラリまたはオペレーティングシステムの機能に置き換えられました。代わりにスリープの使用を検討してください。詳細については、オンラインヘルプを参照してください。
コードの先頭に#pragma warning(disable: 4996)
を追加することで無効にできることは知っていますが、VSが他の関数を使用するように強制しているのは非常に迷惑です。この動作を無効にする方法はありますか?
あなたが尋ねる前に、「警告をエラーとして扱う」は無効になっており、すべての警告をオフにしてもエラーになります!
どうやら新しいプロジェクトでは、デフォルトで「SDKチェック」が有効になり、これらの警告はエラーとして扱われます。無効にするには、プロジェクトプロパティ->構成プロパティ-> C/C++->一般-> SDLチェック->いいえに進みます。
プログラムの最初に入力してください:
#pragma warning(disable : 4996)
以上です。
C/C++> Advanced> Disable Specific Warningsで特定の警告番号を無効にすることもできます。
プロジェクト-> project_nameプロパティ->構成プロパティ-> C/C++->プリプロセッサ->プリプロセッサ定義->編集...行_CRT_SECURE_NO_WARNINGSを追加
私が言及したすべてのソースをコンパイルします:
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