2017-06-01 18 views
1

コンパイラの最適化を有効にしたときにすべての種類のコンパイラの最適化がオフになっている場合、volatile修飾子を使用する必要があります。volatileを使用してすべてのコンパイラの最適化を無効にしました

私は、はいと言われているSO Volatile and compiler optimizationの投稿を読んでいますが、必要な特定のユースケースは提供していません。

どのような種類の最適化を有効または無効にしても、その使用が依然として必要な場合があります。

+3

C++標準では、「コンパイラの最適化」は行われていません。 –

+3

だからCまたはC++? CとC++は異なる言語であり、良い答えが必要な場合は、1つだけタグを付ける必要があります。回答を希望するC/C++バージョンにタグを付けることをお勧めします。つまり、@ manni66で述べたように、標準ではそのような振る舞いは指定されていません。 – tambre

+0

このような使用例の1つは、メモリマップアドレスへのポインタを使用している場合です。 –

答えて

7

プログラムが最適化されている場合はvolatileが必要な場合は、最適化せずにプログラムも必要になります。最適化は、間違ったさまざまな状態間の間違ったプログラムのみを変更します。

+0

不正なプログラム間の振る舞いだけを違う振る舞いで変更する* – Caleth

+0

@Caleth:ポイントを取って更新しました。 –

関連する問題