web-dev-qa-db-ja.com

Visual Studioの既定でプロジェクトから安全な警告(_CRT_SECURE_NO_WARNINGS)を削除する

Scanf()のような関数を使用するときに現れるプリコンパイラの安全な警告を削除するすべてのプロジェクトに対してデフォルトで設定する方法はありますか。プロジェクトオプションに行を追加するか、コードの先頭に#define _CRT_SECURE_NO_WARNINGSを追加することでそれを実行できることがわかりました。

私は自分自身でプログラミングコンテストを解決するための新しいプロジェクトを繰り返し作成していることに気付きました。

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

コードの冒頭で、または新しいプロジェクトを開始するたびにプリコンパイラオプションで設定します。

162
Juan Martinez

ソリューションエクスプローラーで目的のプロジェクトをすべてマークします。

Alt + F7キーを押すか、ソリューションエクスプローラで右クリックして[プロパティ]を選択します。

設定:すべての設定

プリプロセッサ定義行をクリックしてエディタを起動します。

編集を選択します。

上部の[プリプロセッサ定義]ボックスに「_CRT_SECURE_NO_WARNINGS」をコピーします。

enter image description here

252
user2548100

私はまだVSに慣れていないし、Cにはまったく新しいからです。

#pragma warning(disable:4996)

私のファイルの先頭では、これは私がsprintfで得ていたC4996エラーを抑制しました

ちょっと面倒ですが、私の小さなコードには完璧で、最も簡単なものです。

私はそれについてここで読みます: https://msdn.Microsoft.com/ja-jp/library/2c8f766e.aspx

74
Shaun314

自動的にではなく、いいえ。プロジェクトテンプレートを BlueWandered Suggested または のように作成して、現在および将来のすべてのプロジェクトに使用できるカスタムプロパティシートを作成できます。

  1. プロパティマネージャを開く([表示] - > [プロパティマネージャ])
  2. プロパティマネージャでプロジェクトを右クリックし、[新しいプロジェクトプロパティシートを追加]を選択します。
  3. 名前を付けて共通のディレクトリに作成します。プロパティシートはすべてのビルドターゲットに追加されます。
  4. 新しいプロパティシートを右クリックして[プロパティ]を選択します。これによりプロパティが開き、プロジェクト用に編集している場合と同じように設定を変更できます。
  5. 「共通のプロパティ - > C/C++ - >プリプロセッサ」に進んでください。
  6. 設定 "Preprocessor Definitions"を編集して_CRT_SECURE_NO_WARNINGSを追加してください。
  7. 保存すれば完了です。

新しいプロジェクトを作成するときはいつでも、このようにこのプロパティシートを追加します。

  1. プロパティマネージャを開く([表示] - > [プロパティマネージャ])
  2. プロパティマネージャでプロジェクトを右クリックして[既存プロジェクトプロパティシートの追加]を選択します。

ここでの利点は、共通の設定を管理するための単一の場所が得られるだけでなく、設定を変更するたびに、その設定がそれを使用するすべてのプロジェクトに伝達されることです。あなたが_CRT_SECURE_NO_WARNINGSやBoostのようなあなたのプロジェクトで使用したいライブラリのような設定がたくさんある場合、これは便利です。

25

ここのすべての解決策は私のVS2013でうまくいきませんでした、しかし私は#define _CRT_SECURE_NO_WARNINGSの直前にstdafx.hに#pragma onceを入れ、そしてすべての警告は抑制されました。注:私は私の研究を支援するためにプロトタイピング目的のためだけにコードを書くので、あなたのコードを書くときあなたがこの方法の意味を理解することを確認してください。

お役に立てれば

20
PDF417

vS 2017の私の2セント:

私はそれがこれらのスタイルの両方でstdafx.hで動作することを確認できます:

a)

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 

b)

#define _CRT_SECURE_NO_WARNINGS 1 
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 
#pragma once

(私はMSDNネットワークコールのための別の定義を追加しました..)もちろん私はa)を好みます。

私はそれを確認することができます:#define _CRT_SECURE_NO_WARNINGS(値なし)DOES _ _ _ WORKを行いません。

PSのポイントは、これらの定義を関数の宣言の前、つまり* .hの前に置くことです。

11
ingconti

プロジェクトのプロパティに _CRT_SECURE_NO_WARNINGS を追加することはできますが、最も簡単な方法は、あらゆる種類の警告やエラーを無効にするためにstdafx.hを使用することです。

#pragma once

また、_CRT_SECURE_NO_WARNINGSに値が定義されている限り、値(つまり "1")を定義する必要はありません。それで、それはこのように見えるべきです:

#define _CRT_SECURE_NO_WARNINGS 

#pragma once
0

_ CRT_SECURE_NO_WARNINGS」にコピーしてくださいprojects-> properties-> c/c ++-> preprocessor-> preprocessor definition ok

0
Leninkumar

プロジェクトでstdafx.hが使用されていない場合は、.cppファイルの最初の行に次の行を追加すれば、コンパイラの警告が表示されなくなります。少なくとも、Visual Studio C++ 2008ではこれが問題になります。

#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1

コメントと空白行をそれらの前に置いても構いません。

0
R Sahu