C/C++ プロパティ ページ

以下のプロパティ ページは、[プロジェクト]>[プロパティ]>[構成プロパティ]>[C/C++] の下にあります。

C/C++ の全般プロパティ

追加のインクルード ディレクトリ

インクルード パスに追加する 1 つ以上のディレクトリを指定します。 複数のディレクトリがある場合は、セミコロン (;) で区切ります。 /I (追加のインクルード ディレクトリ) コンパイラ オプションを設定します。

追加の #using ディレクトリ

#using ディレクティブに渡された名前を解決するために、検索するディレクトリを 1 つ以上指定します。 複数のディレクトリを追加する場合は、セミコロン (;) で区切ります。 /AI コンパイラ オプションを設定します。

追加の BMI ディレクトリ

import ディレクティブに渡された名前を解決するために、検索するディレクトリを 1 つ以上指定します。 複数のディレクトリを追加する場合は、セミコロン (;) で区切ります。 /ifcSearchDir[path] コンパイラ オプションを設定します。

追加のモジュールの依存関係

import ディレクティブに渡された名前を解決するために、使用するモジュールを 1 つ以上指定します。 複数のディレクトリを追加する場合は、セミコロン (;) で区切ります。 /reference コンパイラ オプションを設定します。

追加のヘッダー ユニットの依存関係

import ディレクティブに渡された名前を解決するために、使用するヘッダー ユニットを 1 つ以上指定します。 複数のディレクトリを追加する場合は、セミコロン (;) で区切ります。 /headerUnit コンパイラ オプションを設定します。

モジュールの依存関係のソースをスキャンする

このプロパティが [はい] に設定されている場合、コンパイラは、モジュール インターフェイスとヘッダー ユニットのソースだけでなく、すべての C++ ソースでモジュールとヘッダー ユニットの依存関係をスキャンします。 ビルド システムによって、完全な依存関係グラフが作成されます。これにより、インポートされたすべてのモジュールとヘッダー ユニットが、それらに依存するファイルをコンパイルする前に、確実にビルドされます。 [モジュールの依存関係のソースのスキャン] と [インポートに含める変換] の両方が [はい] に設定されている場合、ヘッダー ファイルと同じディレクトリ内のheader-units.json ファイルで指定されたすべてのヘッダー ファイルがヘッダー ユニットにコンパイルされます。

拡張子 .ixxを持つファイルと、 ファイル プロパティ>C/C++>Advanced>Compile As プロパティが C++ ヘッダー ユニット (/exportHeader) としてコンパイルに設定されているファイルは、常にスキャンされます。

拡張子 .ixxを持つファイル、および File プロパティ>C/C++>Compile As プロパティが Compile as C++ Header Unit (/exportHeader)に設定されているファイルは、常にスキャンされます。

インクルードをインポートに変換する

このプロパティが Yes に設定されている場合、コンパイラは、特定の条件が満たされた場合、 #include ディレクティブを import ディレクティブとして扱います。ヘッダー ファイルは同じディレクトリ内の header-units.json ファイルで指定され、ヘッダー ファイルにはコンパイル済みのヘッダー ユニット ( .ifc ファイル) を使用できます。 それ以外の場合、ヘッダー ファイルは通常の #include として扱われます。 header-units.json ファイルは、シンボルの重複なしに、各 #include のヘッダー ユニットをビルドするために使用されます。 Includes を Imports に変換モジュールの依存関係についてソースをスキャン の両方が はい に設定されている場合、コンパイラはヘッダー ユニットにコンパイル可能なすべてのヘッダー ファイルを自動的に検出します。 このプロパティによって、/translateInclude コンパイラ オプションが設定されます。

デバッグ情報の形式

コンパイラによって生成されるデバッグ情報の種類を指定します。 このプロパティには、互換性のあるリンカー設定が必要です。 /Z7/Zi/ZI (デバッグ情報の形式) コンパイラ オプションを設定します。

選択肢

  • なし (None) - デバッグ情報が生成されないため、コンパイルが高速になる可能性があります。
  • C7 互換 (OldStyle) - 完全なシンボリック デバッグ情報を含むオブジェクト ファイルを生成します。 PDB ファイルは生成されません。
  • プログラム データベース (ProgramDatabase) - デバッガーで使用する型情報とシンボリック デバッグ情報を含むプログラム データベース (PDB) を生成します。 シンボリック デバッグ情報には、変数や関数の名前と型、および行番号が含まれます。
  • エディット コンティニュのプログラム データベース (EditAndContinue) - 前述のように、 エディット コンティニュ 機能をサポートする形式でプログラム データベースを生成します。

マイ コードのみデバッグのサポート

このコンパイル単位でマイ コードのみデバッグを有効にするためのサポート コードを追加します。 /JMC を設定します。

C++ 動的デバッグのサポート

(プレビュー)/dynamicdeoptを有効にするコンパイラ フラグ を設定します。 最適化解除されたブレークポイントを配置し、オンデマンド関数の最適化解除を使用して任意の場所にステップインします。 最適化されたコードをデバッグするには、このモードを使用します。

共通言語ランタイム サポート

.NET ランタイム サービスを使用します。 このスイッチは、他のスイッチと互換性がありません。 詳細については、 /clr スイッチ ファミリのドキュメントを参照してください。

選択肢

  • 共通言語 RunTime のサポートなし - 共通言語ランタイムのサポートなし。
  • [共通言語ランタイム サポート] - アプリケーションのメタデータを作成して、他の CLR アプリケーションで使用できるようにします。 また、アプリケーションで、他の CLR コンポーネントのメタデータ内の型とデータを使用できるようにします。
  • [純粋 MSIL 共通言語ランタイム サポート] - ネイティブの実行可能コードを含まない、MSIL のみの出力ファイルを作成します。ただし、MSIL にコンパイルされたネイティブ型を含めることはできます。
  • [安全な MSIL 共通言語ランタイム サポート] - MSIL のみの (ネイティブの実行可能コードを含まない)、検証可能な出力ファイルを作成します。

Windows ランタイム拡張機能を使用する

Windows ランタイム 言語拡張機能を利用します。 /ZW を設定します。

スタートアップバナーの非表示

コンパイラの開始時のサインオン バナーの表示と、コンパイル時の情報メッセージの表示を抑制します。

警告レベル

コード エラーに対するコンパイラの警告レベルを指定します。 /W0 - /W4 を設定します。

選択肢

  • [すべての警告を非表示にする] - レベル 0 では、すべての警告を無効にします。
  • [レベル 1] - レベル 1 では、重大な警告を表示します。 レベル 1 は、コマンド ラインの既定の警告レベルです。
  • [レベル 2] - レベル 2 では、レベル 1 のすべての警告と、レベル 1 より重大度の低い警告を表示します。
  • [レベル 3] - レベル 3 では、レベル 2 のすべての警告と、運用環境向けに推奨されるその他すべての警告を表示します。
  • レベル 4 - レベル 4 では、レベル 3 のすべての警告と情報警告が表示されます。ほとんどの場合、無視しても問題ありません。
  • [警告をすべて有効にする] - 既定で無効にされている警告を含む、すべての警告を有効にします。

警告をエラーとして扱う

コンパイラの警告をエラーとして扱います。 新しいプロジェクトの場合は、すべてのコンパイルで /WX を使用することをお勧めできます。 すべての警告を解決することで、見つけにくいコードの欠陥を最小限に抑えます。

警告バージョン

特定のバージョンのコンパイラ以降で導入された警告を非表示にします。 /Wv:xx[.yy[.zzzzz]] を設定します。

診断形式

診断メッセージに列情報やソース コンテキストを表示する、多様な診断を有効にします。

選択肢

  • [キャレット] - 診断メッセージで列情報を表示します。 また、問題のある列を示すキャレットを含むソース コードの関連する行も出力します。
  • [列情報] - 可能な場合は、診断が発行された行内の列番号も表示します。
  • [クラシック] - 行番号を含む、以前の簡潔な診断メッセージのみを出力します。

SDL チェック

追加のセキュリティ開発ライフサイクル (SDL) で推奨されるチェック。 セキュリティで保護されたコード生成機能の追加機能を有効にし、エラーとしてセキュリティ関連の追加の警告を有効にします。 /sdl/sdl- を設定します。

複数プロセッサによるコンパイル

複数プロセッサによるコンパイルを有効にします。 /MP コンパイラ オプションを設定します。

アドレス サニタイザーを有効にする

AddressSanitizer インストルメンテーションを含むプログラムをコンパイルし、リンクします。 このプロパティは現在、x86 および x64 のターゲット ビルドをサポートしています。 /fsanitize コンパイラ オプションを設定します。

Fuzzer のサポートを有効にする (試験段階)

Fuzzer を使用してプログラムをコンパイルします。 最適な結果を得るには、AddressSanitizer を有効にします。 現在、x86 および x64 ビルドで使用できます。 /fsanitize=fuzzer を設定します。

C/C++ 最適化プロパティ

最適化

コード最適化のオプションを選択します。 特定の最適化オプションを使用するには、[ カスタム] を 選択します。 /Od/O1/O2 を設定します。

選択肢

  • カスタム - カスタムの最適化。
  • 無効 - 最適化を無効にします。
  • 最大最適化 (優先サイズ) - /Os /Oy /Ob2 /Gs /GF /Gyに相当します。
  • 最大最適化 (優先速度) - /Oi /Ot /Oy /Ob2 /Gs /GF /Gyに相当します。
  • 最適化 (優先速度) - /Oi /Ot /Oy /Ob2に相当します。

インライン関数の展開

ビルドのインライン関数の拡張レベルを選択します。 /Ob を設定します。

選択肢

  • 既定値
  • [無効] - インライン展開を無効にします。これは既定でオンになっています。
  • [__inline のみ] - inline__forceinline、または __inline としてマークされた関数のみを展開します。 または、C++ メンバー関数がクラス宣言内で定義される場合。
  • [拡張可能な関数すべて] - inline または __inline としてマークされた関数と、コンパイラが選択するその他すべての関数を展開します。 (拡張はコンパイラの判断で行われます。このコンパイラが選択した拡張は、多くの場合 、自動インライン化と呼ばれます)。

組み込み関数を有効にする

組み込み関数を有効にします。 組み込み関数を使用すると、より高速ですが、場合によっては大きなコードが生成されます。 /Oi を設定します。

サイズまたは速度を優先する

コード サイズとコード速度のどちらを優先するか。 Global Optimization をオンにする必要があります。 /Ot/Os を設定します。

選択肢

  • [実行可能ファイルのサイズを優先] - 速度よりもサイズを優先するようにコンパイラに指示することで、EXE と DLL のサイズを最小限に抑えます。
  • [実行速度を優先] - サイズよりも速度を優先するようにコンパイラに指示することで、EXE と DLL の速度を最大化します。 (この値は、最適化が有効になっている場合の既定値です)。
  • [なし] - サイズと速度の最適化を実行しません。

フレーム ポインターを省略する

呼び出しスタックでフレームポインターの作成を抑制します。

ファイバー保護の最適化を有効にする

ファイバーを使用してスレッド ローカル ストレージにアクセスするアプリケーションに対して、ファイバー セーフな最適化を有効にします。 /GT を設定します。

プログラム全体の最適化

コード生成をリンク時まで遅延させることで、モジュール間の最適化を有効にします。 リンカー オプション [リンク時のコード生成] が必要になります。 /GL を設定します。

C/C++ プリプロセッサのプロパティ

プリプロセッサの定義

ソース ファイルの前処理シンボルを定義します。

指定したプリプロセッサ定義の無効化

1 つ以上のプリプロセッサの定義解除を指定します。 /U を設定します。

すべてのプリプロセッサ定義の無効化

すべてのプリプロセッサの定義済み定義を無効にします。 /u を設定します。

標準インクルードパスを無視する

INCLUDE 環境変数で指定されたディレクトリのインクルード ファイルをコンパイラが検索しないようにします。

ファイルの前処理

C および C++ ソース ファイルが前処理され、前処理済みの出力がファイルに書き込まれます。 このオプションを指定すると、コンパイルが抑制され、.obj ファイルが生成されません。

行番号抑制の前処理

#line ディレクティブなしで前処理します。

コメントを維持する

このオプションを有効にすると、C および C++ ソース コメント (// および /* ... */) が .i ファイルやその他のプリプロセッサ出力に保持されます。 プリプロセッサは、既定でコメントを削除します。

前処理オプションの少なくとも 1 つ を設定する 必要があります。 /C を設定します。

標準準拠プリプロセッサを使用する

標準準拠プリプロセッサ (/Zc:preprocessor) を使用します。 現在、 /std:c11 以降のバージョンによって暗黙的に示されています。 レガシ プリプロセッサを使用するには、このプロパティを [いいえ] に設定します。

C/C++ コード生成プロパティ

文字列プールを有効にする

このプロパティを有効にして、同じ文字列をコンパイル済みプログラムの 1 つの読み取り専用コピーに結合する文字列プールを有効にします。 これにより、プログラムが小さくなります。 /O1/O2/ZI は、 /GF オプションを自動的に設定します。

簡易リビルドの有効化

最小限のリビルドを有効にします。これにより、変更された C++ クラス定義を含むヘッダー (.h) ファイルを含む C++ ソース ファイルを再コンパイルするかどうかを決定します。

C++ の例外を有効にする

コンパイラで使用する例外処理のモデルを指定します。

選択肢

  • [はい - SEH の例外あり] - 非同期 (構造化) 例外と同期 (C++) 例外をキャッチする例外処理モデル。 /EHa を設定します。
  • はい - C++ 例外のみをキャッチし、 extern "C" 関数が C++ 例外をスローしないものと想定するようにコンパイラを構成する例外処理モデル。 /EHsc を設定します。
  • はい (Extern C 関数の場合 ) - C++ 例外のみをキャッチし、 extern "C" 関数が例外をスローすることを前提としてコンパイラを構成する例外処理モデル。 /EHs を設定します。
  • [いいえ] - 例外処理なし。

小さい型のチェック

小さい型への変換のチェックを有効にします。 デバッグ以外の最適化の種類と互換性がありません。 /RTCc を設定します。

基本ランタイムのチェック

基本的なランタイム エラー チェックを有効にします。 デバッグ以外の最適化の種類と互換性がありません。 /RTCs/RTCu/RTC1 を設定します。

選択肢

  • スタック フレーム - スタック フレームランタイムエラーチェックを有効にします。
  • [初期化されていない変数] - 変数が初期化されずに使用されている場合に報告します。
  • 両方 (/RTC1,equiv. to /RTCsu) - /RTCsuに相当します。
  • [既定値] - 既定のランタイム チェック。

ランタイム ライブラリ

リンクするランタイム ライブラリを指定します。 /MT/MTd/MD/MDd を設定します。

選択肢

  • マルチスレッド - アプリケーションでマルチスレッドの静的バージョンのランタイム ライブラリを使用します。
  • マルチスレッド デバッグ - _DEBUG_MTを定義します。 また、このオプションにより、リンカーが外部シンボルを解決するためにLIBCMTD.libを使用するように、コンパイラはライブラリ名 LIBCMTD.lib.obj ファイルに配置します。
  • マルチスレッド DLL - アプリケーションで DLL 固有のマルチスレッド バージョンのランタイム ライブラリを使用します。 _MT および _DLL を定義し、コンパイラにライブラリ名 MSVCRT.lib.obj ファイルに挿入させます。
  • マルチスレッド デバッグ DLL - _DEBUG_MT、および _DLL を定義し、アプリケーションでランタイム ライブラリのデバッグ DLL 固有のマルチスレッド バージョンを使用します。 また、コンパイラはライブラリ名 MSVCRTD.lib.obj ファイルに配置します。

構造体メンバーのアラインメント

構造体メンバーの配置に 1、2、4、8、または 16 バイトの境界を指定します。 /Zp を設定します。

選択肢

  • 1 バイト - 1 バイト境界上の構造体をパックします。 /Zp と同じ。
  • 2 バイト - 2 バイト境界上の構造体をパックします。
  • 4 バイト - 4 バイト境界に構造体をパックします。
  • 8 バイト - 8 バイト境界の構造体をパックします (既定)。
  • 16 バイト - 16 バイト境界に構造体をパックします。
  • [既定値] - 既定のアラインメント設定。

構造体メンバーのアラインメントについて 1、2、4、または 8 バイトの境界を指定します。 /Zp を設定します。

選択肢

  • 1 バイト - 1 バイト境界上の構造体をパックします。 /Zp と同じ。
  • 2 バイト - 2 バイト境界上の構造体をパックします。
  • 4 バイト - 4 バイト境界に構造体をパックします。
  • 8 バイト - 8 バイト境界の構造体をパックします (既定)。
  • [既定値] - 既定のアラインメント設定。

セキュリティ チェック

スタック バッファー オーバーランを検出するのに役立ちます。攻撃者がアプリケーションを侵害する可能性があります。

選択肢

  • セキュリティ チェックを無効にする - /GS-を設定します。
  • セキュリティ チェックを有効にする - /GSを設定します。

制御フロー ガード

無効なコード ブロックへのディスパッチの試行を検出するのに役立ちます。

選択肢

  • はい - 制御フロー ガードを有効にします。 /guard:cf を設定します。
  • いいえ

関数レベルでリンクする

コンパイラが個々の関数をパッケージ関数 (COMDAT) の形式でパッケージ化できるようになります。 エディット コンティニュの機能に必要です。 /Gy を設定します。

並列コード生成を有効にする

最適化が有効な場合に、#pragma loop(hint_parallel[(n)]) の使用が検出されたループに対して、コンパイラが並列コードを生成できるようにします。

拡張命令セットを有効にする

拡張命令セットをサポートする、プロセッサ上で検出された命令の使用を有効にします。 たとえば、IA-32 に対する SSE、SSE2、AVX、AVX2 の機能強化、x64 の AVX および AVX2 の機能強化などです。 /arch:SSE は x86 ビルドでのみ使用できます。 /arch:SSE2 は x86 および x64 ビルドで使用でき、両方のアーキテクチャの既定値です。 拡張命令の使用は、/arch:IA32 によって無効にすることができます。 詳細については、「/arch (x86)」、「/arch (x64)」、「/arch (ARM64)」、および「/arch (ARM)」を参照してください。

選択肢

  • ストリーミング SIMD 拡張機能 (X86) - ストリーミング SIMD 拡張機能を有効にします。 /arch:SSE を設定します。
  • ストリーミング SIMD 拡張機能 2 (X86) - ストリーミング SIMD 拡張機能 2 を有効にします。 /arch:SSE2 を設定します。
  • Advanced Vector Extensions (X86/X64) - 高度なベクター拡張を有効にします。 /arch:AVX を設定します。
  • Advanced Vector Extensions 2 (X86/x64) - Advanced Vector Extensions 2 を有効にします。 /arch:AVX2 を設定します。
  • Advanced Vector Extensions 512 (X86/X64) - Advanced Vector Extensions 512 を有効にします。 /arch:AVX512 を設定します。
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Advanced Vector Extensions 10 バージョン 1 を有効にします。 /arch:AVX10.1 を設定します。
  • Advanced Vector Extensions AVX10.2 (X86/X64) - Advanced Vector Extensions 10 バージョン 2 を有効にします。 /arch:AVX10.2 を設定します。
  • 仮想化拡張機能 (ARM)。 ARM 仮想化拡張機能を有効にします。 /arch:ARMv7VE を設定します。
  • ARM VFPv4 命令 (ARM)。 ARM VFPv4 命令を有効にします。 /arch:VFPv4 を設定します。
  • CPU 拡張機能の要件 ARMv8.0-A (ARM64)。 ARMv8.0-A 要件を有効にします。 /arch:arm8.0 を設定します。
  • CPU 拡張機能の要件 ARMv8.1-A (ARM64)。 ARMv8.1-A 要件を有効にします。 /arch:arm8.1 を設定します。
  • CPU 拡張機能の要件 ARMv8.2-A (ARM64)。 ARMv8.2-A 要件を有効にします。 /arch:arm8.2 を設定します。
  • CPU 拡張機能の要件 ARMv8.3-A (ARM64)。 ARMv8.3-A 要件を有効にします。 /arch:arm8.3 を設定します。
  • CPU 拡張機能の要件 ARMv8.4-A (ARM64)。 ARMv8.4-A 要件を有効にします。 /arch:arm8.4 を設定します。
  • CPU 拡張機能の要件 ARMv8.5-A (ARM64)。 ARMv8.5-A 要件を有効にします。 /arch:arm8.5 を設定します。
  • CPU 拡張機能の要件 ARMv8.6-A (ARM64)。 ARMv8.6-A 要件を有効にします。 /arch:arm8.6 を設定します。
  • CPU 拡張機能の要件 ARMv8.7-A (ARM64)。 ARMv8.7-A 要件を有効にします。 /arch:arm8.7 を設定します。
  • CPU 拡張機能の要件 ARMv8.8-A (ARM64)。 ARMv8.8-A 要件を有効にします。 /arch:arm8.8 を設定します。
  • 拡張命令なし - x86 ビルドの拡張命令を無効にします。 /arch:IA32 を設定します。
  • [未設定 ] - /arch オプションを明示的に設定しません。

拡張命令セットをサポートする、プロセッサ上で検出された命令の使用を有効にします。 たとえば、IA-32 に対する SSE、SSE2、AVX、AVX2 の機能強化、x64 の AVX および AVX2 の機能強化などです。 現在、/arch:SSE/arch:SSE2 は、x86 アーキテクチャ用にビルドする場合にのみ使用できます。 オプションが指定されていない場合、コンパイラは SSE2 をサポートするプロセッサで見つかった命令を使用します。 拡張命令の使用は、/arch:IA32 によって無効にすることができます。 詳細については、「/arch (x86)」、「/arch (x64)」、「/arch (ARM64)」、および「/arch (ARM)」を参照してください。

選択肢

  • ストリーミング SIMD 拡張機能 (X86) - ストリーミング SIMD 拡張機能を有効にします。 /arch:SSE を設定します。
  • ストリーミング SIMD 拡張機能 2 (X86) - ストリーミング SIMD 拡張機能 2 を有効にします。 /arch:SSE2 を設定します。
  • Advanced Vector Extensions (X86/X64) - 高度なベクター拡張を有効にします。 /arch:AVX を設定します。
  • Advanced Vector Extensions 2 (X86/x64) - Advanced Vector Extensions 2 を有効にします。 /arch:AVX2 を設定します。
  • Advanced Vector Extensions 512 (X86/X64) - Advanced Vector Extensions 512 を有効にします。 /arch:AVX512 を設定します。
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Advanced Vector Extensions 10 バージョン 1 を有効にします。 /arch:AVX10.1 を設定します。
  • 仮想化拡張機能 (ARM)。 ARM 仮想化拡張機能を有効にします。 /arch:ARMv7VE を設定します。
  • ARM VFPv4 命令 (ARM)。 ARM VFPv4 命令を有効にします。 /arch:VFPv4 を設定します。
  • CPU 拡張機能の要件 ARMv8.0-A (ARM64)。 ARMv8.0-A 要件を有効にします。 /arch:arm8.0 を設定します。
  • CPU 拡張機能の要件 ARMv8.1-A (ARM64)。 ARMv8.1-A 要件を有効にします。 /arch:arm8.1 を設定します。
  • CPU 拡張機能の要件 ARMv8.2-A (ARM64)。 ARMv8.2-A 要件を有効にします。 /arch:arm8.2 を設定します。
  • CPU 拡張機能の要件 ARMv8.3-A (ARM64)。 ARMv8.3-A 要件を有効にします。 /arch:arm8.3 を設定します。
  • CPU 拡張機能の要件 ARMv8.4-A (ARM64)。 ARMv8.4-A 要件を有効にします。 /arch:arm8.4 を設定します。
  • CPU 拡張機能の要件 ARMv8.5-A (ARM64)。 ARMv8.5-A 要件を有効にします。 /arch:arm8.5 を設定します。
  • CPU 拡張機能の要件 ARMv8.6-A (ARM64)。 ARMv8.6-A 要件を有効にします。 /arch:arm8.6 を設定します。
  • CPU 拡張機能の要件 ARMv8.7-A (ARM64)。 ARMv8.7-A 要件を有効にします。 /arch:arm8.7 を設定します。
  • CPU 拡張機能の要件 ARMv8.8-A (ARM64)。 ARMv8.8-A 要件を有効にします。 /arch:arm8.8 を設定します。
  • 拡張命令なし - x86 ビルドの拡張命令を無効にします。 /arch:IA32 を設定します。
  • [未設定 ] - /arch オプションを明示的に設定しません。

選択肢

  • [ストリーミング SIMD 拡張命令] - ストリーミング SIMD 拡張命令。 /arch:SSE を設定します
  • [ストリーミング SIMD 拡張命令 2] - ストリーミング SIMD 拡張命令 2。 /arch:SSE2 を設定します
  • [Advanced Vector Extensions] - Advanced Vector Extensions。 /arch:AVX を設定します
  • [Advanced Vector Extensions 2] - Advanced Vector Extensions 2。 /arch:AVX2 を設定します
  • [拡張命令なし] - 拡張命令なし。 /arch:IA32 を設定します
  • [設定なし] - 設定なし。

ベクターの長さを有効にする

/arch:AVX512フラグと/arch:AVX10.xフラグのベクター長の選択を有効にします。 使用できる値は 256 ビットと 512 ビット (X86/X64) です。

浮動小数点モデル

浮動小数点モデルを設定します。 /fp:precise/fp:strict/fp:fast を設定します。

選択肢

  • [Precise] - 既定値。 等値と非等値について浮動小数点テストの一貫性を向上させます。
  • [Strict] - 最も厳密な浮動小数点モデル。 /fp:strict は、 fp_contract がオフになり、 fenv_access がオンになります。 /fp:except は、暗黙的に指定されていますが、/fp:except- を明示的に指定することで無効にできます。 /fp:except- と共に使用する場合、/fp:strict は厳密な浮動小数点のセマンティクスを適用しますが、例外イベントは無視します。
  • [Fast] - ほとんどの場合、最高速のコードを作成します。

浮動小数点例外を有効にする

信頼性の高い浮動小数点例外モデル。 例外は発生直後にスローされます。 /fp:except を設定します。

ホットパッチ可能なイメージの作成

ホットパッチがオンの場合、コンパイラによって、各関数の最初の命令が確実にホットパッチに必要な 2 バイトになります。 /hotpatch を設定します。

Spectreの軽減策

Spectre の CVE 2017-5753 対策。 /Qspectre を設定します。

選択肢

  • 有効 - CVE 2017-5753 の Spectre 軽減策を有効にします。
  • すべてのロード - すべてのロードで Spectre の緩和策を有効にします。
  • すべての制御フローロード - 制御フローロードに対する Spectre 緩和策を有効にします。
  • 無効 - 設定されていません。

Spectreの軽減策

Spectre の CVE 2017-5753 対策。 /Qspectre を設定します。

選択肢

  • 有効 - CVE 2017-5753 の Spectre 軽減策を有効にします。
  • 無効 - 設定されていません。

Intel JCC Erratum 緩和策を有効にする

Intel JCC erratum マイクロコード更新によって引き起こされるパフォーマンスへの影響に対するソフトウェアの軽減策。 /QIntel-jcc-erratum を設定します。

EH 継続メタデータを有効にする

RIP 検証の実行時に使用される、バイナリの有効な例外処理継続ターゲットの並べ替えられたリストを生成します。 現在、x64 ビルドで使用できます。 /guard:ehcont を設定します。

署名付きリターンを有効にする

関数の戻り値から無効なブロックへのディスパッチの試行を検出して防ぐのに役立つ、符号付きリターンを有効にします。 現在、ARM64 ビルドで使用できます。 /guard:signret を設定します。

C/C++ 言語プロパティ

言語拡張機能を無効にする

言語拡張機能を抑制または有効にします。 /Za を設定します。

WChar_tを組み込み型として扱う

このプロパティを有効にすると、wchar_t型は、short__int16にマップするのと同じ方法で__wchar_tにマップされるネイティブ型になります。 /Zc:wchar_t は既定でオンです。

for ループ スコープの準拠を強制する

Microsoft の拡張機能の for ステートメント ループの標準 C++ 動作を実装します。 /Za/Ze (言語拡張機能の無効化を設定します。 /Zc:forScope は既定でオンです。

参照されていないコードとデータを削除する

このプロパティを有効にすると、コンパイラは参照されていないコードとデータのシンボル情報を生成しなくなります。

型変換規則を施行する

C++11 標準に従い、キャスト操作の結果である右辺値参照型を識別するために使用されます。

ランタイム型情報を有効にする

実行時に C++ オブジェクト型 (ランタイム型情報、または RTTI) を確認するためのコードを追加します。 /GR/GR- を設定します。

Open MP のサポート

OpenMP 2.0 言語拡張機能を有効にします。 /openmp を設定します。

C++ 言語標準

コンパイラが適用する C++ 言語標準を決定します。 既定値では標準オプションが設定されないため、コンパイラでは既定の C++14 設定が使用されます。 特定の値を選択すると、対応する /std コンパイラ オプションが設定されます。

選択肢

  • 既定値 (ISO C++14 標準)
  • ISO C++14 標準 (/std:c++14)
  • ISO C++17 標準 (/std:c++17)
  • ISO C++20 標準 (/std:c++20)
  • プレビュー - ISO C++23 Standard (/std:c++23preview)
  • プレビュー - 最新の C++ Working Draft からの機能 (/std:c++latest)

C 言語標準

コンパイラが適用する C 言語標準を決定します。 既定値では標準オプションが設定されないため、コンパイラは既定のレガシ MSVC 設定を使用します。 特定の値を選択すると、対応する /std コンパイラ オプションが設定されます。

選択肢

  • 既定値 (レガシ MSVC)
  • ISO C11 標準 (/std:c11)
  • ISO C17 (2018) Standard (/std:c17)
  • プレビュー - 最新の C 作業ドラフト (/std:clatest) の機能

準拠モード

準拠モードを有効または抑制します。 /permissive- を設定します。

試験段階の C++ 標準ライブラリ モジュールを有効にする

C++ モジュール TS および標準ライブラリ モジュールの試験的なサポートです。

ISO C++23 標準ライブラリ モジュールをビルドする

Visual Studio 17.6 以降では、このプロパティが有効で 、C++ 言語標準/std:c++latest に設定されている場合、Microsoft C++ プロジェクトは ISO C++23 標準ライブラリ モジュールを自動的に検索してビルドします。 これにより、C++ コードを import std または import std.compat を行うことができます。

C/C++ プリコンパイル済みヘッダーのプロパティ

プリコンパイル済みヘッダー

プリコンパイル済みヘッダーの作成と使用

プリコンパイル済みヘッダーをビルド中に作成または使用できるようになります。 /Yc/Yu を設定します。

選択肢

  • [作成] - 特定の時点でのコンパイルの状態を表すプリコンパイル済みヘッダー (.pch) ファイルを作成するようにコンパイラに指示します。
  • [使用] - 現在のコンパイルで既存のプリコンパイル済みヘッダー (.pch) ファイルを使用するようにコンパイラに指示します。
  • [プリコンパイル済みヘッダーを使用しない] - プリコンパイル済みヘッダーを使用しません。

プリコンパイル済みヘッダー ファイル

コンパイラがプリコンパイル済みヘッダーの作成またはアクセスに使用するヘッダー ファイルの名前を指定します。 /Yc/Yu を設定します。

プリコンパイル済みヘッダーの出力ファイル

生成するプリコンパイル済みヘッダー ファイルのパスまたは名前を指定します。 /Fp を設定します。

C/C++ 出力ファイルのプロパティ

属性ソースの展開

展開された属性がソース ファイルに挿入されたリスト ファイルを作成します。 /Fx を設定します。

アセンブラー出力

アセンブリ言語出力ファイルの内容を指定します。 /FA/FAc/FAs/FAcs を設定します。

選択肢

  • [なし] - リストなし。
  • アセンブリのみの一覧 - アセンブリコード: .asm
  • 機械語を用いたアセンブリ - 機械語とアセンブリコード: .cod
  • ソース コードを使用したアセンブリ - ソース コードとアセンブリ コード: .asm
  • アセンブリ、マシン コード、ソース - アセンブリ、マシン コード、ソース コード: .cod

アセンブラー リスティングに Unicode を使う

出力ファイルが UTF-8 形式で作成されます。

ASM リストの場所

ASM リスト ファイルの相対パスまたは名前を指定します。 ファイルまたはディレクトリ名を指定できます。 /Fa を設定します。

モジュール出力ファイル名

モジュールまたはヘッダー ユニット出力 (BMI) ファイルの場所。 ファイルまたはディレクトリ名を指定できます。 /ifcOutput[name] を設定します。

モジュール依存関係ファイル名

生成されたモジュール依存関係ファイルのパスまたは名前を指定します。 /scanDependencies[path] を設定します。

オブジェクト ファイル名

既定のオブジェクト ファイル名をオーバーライドする名前を指定します。 ファイルまたはディレクトリ名を指定できます。 /Fo を設定します。

プログラム データベース ファイル名

コンパイラによって生成された PDB ファイルの名前を指定します。 また、必要なコンパイラによって生成された IDB ファイルのベース名も指定します。 ファイルまたはディレクトリ名を指定できます。 /Fd を設定します。

XML ドキュメント ファイルを生成する

コンパイラが XML ドキュメント コメント ファイル (.XDC) を生成するように指定します。 /doc を設定します。

XML ドキュメント ファイル名

生成された XML ドキュメント ファイルの名前を指定します。 ファイルまたはディレクトリ名を指定できます。 /doc: <名前> を設定します。

ソース依存関係ファイルの生成

ソースのコンパイルにコンパイラが使用するすべてのファイルの一覧を含む JSON ファイルを生成します。 /sourceDependencies を設定します。

ソース依存関係ファイル名

生成されたソース依存関係ファイルのパスまたは名前を指定します。 /sourceDependencies[path] を設定します。

C/C++ のブラウズ情報プロパティ

ブラウザー情報の有効化

コンパイラが .bsc ファイルを生成するかどうかを指定します。 /FR を設定します。

ブラウザー情報ファイル

ブラウザー情報ファイルの省略可能な名前を指定します。 /FR <名前> を設定します。

C/C++ の外部インクルード プロパティ

角かっこでインクルードされたファイルを外部ファイルとして扱う

山かっこでインクルードされたファイルを外部として扱うかどうかを指定します。 Yes に設定して /external:anglebrackets コンパイラ オプションを設定します。

外部ヘッダーの警告レベル

外部ヘッダー内のコード エラーに対するコンパイラの警告レベルを指定します。 このプロパティによって、/external:Wn コンパイラ オプションが設定されます。 この値が [プロジェクトの警戒レベルの継承] または既定値に設定されている場合、他の /external オプションは無視されます。

外部ヘッダーのテンプレート診断

テンプレート インスタンス化チェーンにおける警告レベルを評価するかどうかを指定します。 Yes に設定して /external:templates- コンパイラ オプションを設定します。

外部ヘッダーのコード分析を無効にする

外部ヘッダーのコード分析を無効にします。 /analyze:external- コンパイラ オプションを設定します。

外部ヘッダーの分析ルールセット

外部ヘッダーに対して、コード分析ルールセットのオーバーライドを指定します。 このプロパティが指定されていない場合は、Code Analysis設定が使用されます。 /analyze:external:ruleset path コンパイラ オプションを設定します。

C/C++ の高度なプロパティ

呼び出し規則

アプリケーションの既定の呼び出し規則を選択します (関数によってオーバーライドできます)。 /Gd/Gr/Gz/Gv を設定します。

選択肢

  • __cdecl- __stdcallまたは__fastcallとしてマークされた C++ メンバー関数と関数を除く、すべての関数の__cdecl呼び出し規則を指定します。
  • __fastcall- __cdeclまたは__stdcallとしてマークされた C++ メンバー関数と関数を除く、すべての関数の__fastcall呼び出し規則を指定します。 すべての __fastcall 関数には、プロトタイプ宣言が必要です。
  • __stdcall- __cdeclまたは__fastcallとしてマークされた C++ メンバー関数と関数を除く、すべての関数の__stdcall呼び出し規則を指定します。 すべての __stdcall 関数には、プロトタイプ宣言が必要です。
  • __vectorcall- __cdecl__fastcall、または__stdcallとしてマークされた C++ メンバー関数と関数を除く、すべての関数の__vectorcall呼び出し規則を指定します。 すべての __vectorcall 関数には、プロトタイプ宣言が必要です。

としてコンパイル

ソース ファイルのコンパイル言語オプションを選択します。 /TC/TP/インターフェイス/internalPartition、または/exportHeaderオプションを設定します。

選択肢

  • 既定 - 既定。
  • C コードとしてコンパイル (/TC) - 指定したソース ファイルを C コードとしてコンパイルします。 既定では、 .c 拡張子を持つファイルは C としてコンパイルされます。
  • C++ コードとしてコンパイル (/TP) - 指定されたソース ファイルを C++ コードとしてコンパイルします。 既定では、 .c.ixx.cppm、または .h 拡張子を持たないすべてのソース ファイルは、C++ としてコンパイルされます。
  • C++ モジュール コードとしてコンパイルする (/interface) - 指定したソース ファイルを C++ モジュール コードとしてコンパイルします。 既定では、 .ixx または .cppm 拡張子を持つファイルは、C++ モジュール コードとしてコンパイルされます。
  • C++ モジュール内部パーティションとしてコンパイルする (/internalPartition) - 指定されたソース ファイルを C++ モジュールの内部パーティションとしてコンパイルします。
  • C++ ヘッダー ユニットとしてコンパイル (/exportHeader) - 指定されたソース ファイルを C++ ヘッダー ユニットとしてコンパイルします。 既定では、 .h 拡張子を持つファイルまたは拡張子のないファイルは、ヘッダー ユニットとしてコンパイルされます。

特定の警告を無効にする

指定した警告番号を無効にします。 警告番号をセミコロン区切りのリストに配置します。 /wd <番号> を設定します。

必ず使用されるインクルード ファイル

1 つ以上の強制インクルード ファイルを指定します。 /FI <名前> を設定します。

強制 #using ファイル

1 つ以上の強制 #using ファイルを指定します。 /FU <名前> を設定します。

インクルード ファイルの表示

コンパイラ出力を持つインクルード ファイルのリストを生成します。 /showIncludes を設定します。

完全なパスを使用する

診断メッセージで完全なパスを使います。 /FC を設定します。

既定のライブラリ名の省略

.obj ファイルの既定のライブラリ名を省略するように指定します。 /Zl を設定します。

内部コンパイル エラー報告

注意

このオプションは非推奨です。 Windows Vista 以降では、エラー報告は Windows エラー報告 (WER) の設定によって制御されます。

特定の警告をエラーとして扱う

特定のコンパイラ警告をエラーとして扱います。n はコンパイラ警告です。

追加オプション

その他のオプション。