volatile修飾子とは?
volatile修飾子とは、その変数がプログラム外の要因で変化し得ることをコンパイラへ伝え、読み書きの削除・並べ替え・レジスタ保持といった最適化を禁止する指定。ハードウェアレジスタや割込みで書き換わる変数に付ける。試験では最適化と割込みの絡みで問われる。
ぼらたいるしゅうしょくし
volatile修飾子の意味
その変数がプログラム外の要因で変化し得ることをコンパイラへ伝え、読み書きの削除・並べ替え・レジスタ保持といった最適化を禁止する指定。ハードウェアレジスタや割込みで書き換わる変数に付ける。試験では最適化と割込みの絡みで問われる。
volatile修飾子の具体例
割込みハンドラが立てるフラグをメインループで待つ処理にvolatileを付けないと、コンパイラが初回の読み値をレジスタに保持し続け、無限ループになる。メモリマップドI/Oのステータスレジスタでも同様に必須。
volatile修飾子は試験でどう引っ掛けられる?
volatileは最適化を抑えるだけで、アトミック性もメモリバリアも保証しない。8ビットマイコンでの16ビット変数の更新や、マルチコアでの共有変数には、割込み禁止や排他制御が別途必要になる。
volatile修飾子と関連する用語
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。