7

私は通常、gcc と -ansi フラグを使用して Linux でプログラムおよびコンパイルします。しかし、私はVisual C++で仕事をすることを余儀なくされており、Cコードをコンパイルするたびに、次のようなMicrosoftの警告がすべて表示されます

'fscanf': この関数または変数は安全でない可能性があります。代わりに fscanf_s の使用を検討してください。

ANSI C プロジェクトをセットアップするために MSDN Developer のサイトでいくつかの手順を実行したにもかかわらず、これらを取得しましたが、すべての _s (「安全な」) 呼び出しは ANSI C ではありません!

Visual C++ Studio を厳密な ANSI 専用モードにすることについて何か提案はありますか?

ありがとう。

4

3 に答える 3

6

別の回答で述べたように、#define'ing_CRT_SECURE_NO_WARNINGは、質問で言及した特定の警告に対処します。

本当に ANSI のみのモードを探している場合、最も近いのは/Zaコンパイラ スイッチです。Visual Studio IDE 内では、プロジェクトの [プロパティ] ダイアログ (構成プロパティ | C/C++ | 言語 | 言語拡張機能を無効にする)で見つけることができます。

実質的にすべての Windows アプリは、Microsoft のコンパイラ拡張機能を有効にしてビルドされることに注意してください。たとえば、set で Windows SDK ヘッダーを使用することさえできないと思います/Za。コードが本当に厳密な ANSI である場合は、問題ありません。大部分が厳密な ANSI であるプロジェクトに Windows 固有の部分がいくつかある場合、おそらくそれらのソースを分離し、未設定の個々のソース ファイルのみをビルドすることができます/Za

于 2011-03-18T15:39:08.463 に答える
2

特定の警告を抑制する 1 つの方法は、ソースに次のようなものを追加することです。

#if defined( _WIN32 )
#pragma warning(disable:4996)
#endif
于 2011-03-18T15:22:13.393 に答える