他の答えは何であるかに対処していますvolatile
が、私が使用する実際の例を挙げたいと思いますvolatile
(特別なハードウェアメモリの場所から読み書きすることなく)。
volatile
C または C++ プログラムで役立つ1 つの例は、デバッグです。次の例を検討してください。
void do_thing(const std::vector<int>& v) {
if (v.empty()) {
do_thing_1();
} else {
do_thing_2();
}
}
上記の関数をテストし、デバッグ中に true または false の分岐を強制するvolatile
場合は、if 条件に変数を挿入できます。
void do_thing(const std::vector<int>& v) {
volatile bool condition = v.empty();
if (condition) {
do_thing_1();
} else {
do_thing_2();
}
}
volatile
オプティマイザーが変数を完全に最適化しないようにします。これにより、 にブレークポイントを設定するのが簡単になり、if
変更することができますcondition
( を変更する必要はありませんv
)。
condition
変数を変数にすることもできるstatic
ので、ブレークポイントに何度もアクセスする必要はありません。一度ヒットして設定すると、選択した内容が「記憶」されます。
確かにこれはハックですが、特定の状況では非常に役立つことがわかりました。