web-dev-qa-db-ja.com

Visual StudioでC99とC11 Cの標準を切り替えるオプションはありますか?

Visual Studio Environmentを初めて使用し、VS2017 Proを使用しています。 Cで簡単なプログラムを書き、c99c11の両方の標準でコンパイルしたかったのです。 Visual Studioでは、C++標準のみのコンパイラスイッチしか見つかりませんでした。

現在のコードをc99およびc11[〜#〜] c [〜#〜]標準。

Compiler Switch

Standard Switch

14
user9411335

Visual C++でサポートされる唯一の「モード」は、C++ 14準拠の_/std:c++14_モード(デフォルト)、VS 2017の時点で完全ではないC++ 17サポートの_/std:c++17_モード( 15.6)。 _/std:c++latest_モードもあり、将来的にはC++ 20に含まれるようになります。適合性を向上させるには、これらすべてを_/permissive-_と組み合わせる必要があります。

C++ 11標準ライブラリの準拠を満たすために、Visual C++はC99標準ライブラリをサポートする必要があります。これは、C99言語の準拠をサポートすることと同じではありません。

C++ 17標準ライブラリの要件を満たすために、ある時点で、Visual C++はC11標準ライブラリをサポートする必要があり、これもC11言語への準拠と同じではありません。

MicrosoftのC++標準への準拠 および C++ 11/14 STL機能、修正、およびVS 2013の重大な変更 を参照してください。

投稿にはコメントスレッドがあります MSVC:Windowsの最良の選択 Visual C++プロジェクトマネージャーは、真の 'C11'準拠の問題に取り組んでいます。

こんにちはオヌール、

C++への適合に焦点を当てていますが、C++への適合に焦点を当てています。
あまり公表しませんでしたが、VS 2013でCへの準拠についていくつかの作業を行いました。その仕事は含まれていました:
– C99 _Bool
– C99複合リテラル
– C99指定イニシャライザ
– C99変数宣言
C++準拠作業の終わりが近づいています。最後の項目の1つは、適合するプリプロセッサです。CとC++で共有される機能です。プリプロセッサは、C準拠プッシュの開始とC++ 98/11/14準拠作業の終了をマークします。

アンドリュー

13
Chuck Walbourn

Visual Studioは主にC++コンパイラです。 「Cモード」では、1990年の古いC標準に準拠しています。

2013年から2015年頃、彼らは現在ではなく、リリースから約16年後の1999年からの以前のC標準( "C99")をサポートするように努力しました。ただし、この規格に準拠する作業は完了していません。

コンパイラは、オプションの境界チェックライブラリなど、現在のC言語( "C11")のいくつかの選択された機能もサポートしていると思います。この規格は7年間利用可能ですが、完全にはサポートされていません。

したがって、準拠するC言語コンパイラが必要な場合は、他の代替手段を探す必要があります。

5
Lundin