/volatile (volatile キーワードの解釈を)
volatile キーワードの解釈方法を指定します。
/volatile:{iso|ms}
Arguments
/volatile:iso
ISO 標準の C++ 言語で定義されている、厳密な volatile のセマンティックスを選択します。 volatile アクセスでは取得と開放のセマンティックスは保証されていません。 コンパイラが ARM をターゲットとする場合は、これは volatile の既定の解釈です。/volatile:ms
Microsoft 拡張 volatile セマンティクスを選択すると、ISO 標準 C++ 言語を超えることを保証するメモリ オーダリングが追加されます。 volatile アクセスでは取得と開放のセマンティックスは保証されます。 ただし、このオプションにより、コンパイラはハードウェアのメモリ バリアを強制的に生成します。これによって ARM および他のメモリ オーダリングの弱いアーキテクチャでは、著しいオーバーヘッドが追加される場合があります。 コンパイラが ARM 以外のプラットフォームをターゲットとする場合は、これは volatile の既定の解釈です。
解説
スレッド間で共有されるメモリを扱うときには、/volatile:iso を明示的な同期プリミティブおよびコンパイラ組み込みと共に使用することを強くお勧めします。 詳細については、「volatile (C++)」を参照してください。
既存のコードを移植するか、またはプロジェクトの途中でこのオプションを変更する場合、C4746 の警告を有効にして、セマンティクスの違いによって影響を受けるコードの場所を識別することが役立つ場合があります。
#pragma には、このオプションを制御するための相当するものはありません。
/volatile コンパイラ オプションを Visual Studio で設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダーを選択します。
[コマンド ライン] プロパティ ページを選択します。
[追加オプション] ボックスに、/volatile:iso か /volatile:ms を追加します。