0
Q
C中の揮発性
A
答えて
1
揮発性は、基本的に、適用している "オブジェクト"に対して最適化を実行しないようにコンパイラに指示します。
これは、オブジェクトがプログラムの範囲外で変更できる場合に便利です。
1つの例(および他にもあります)には、組み込みシステムがあります。たとえば、メモリマップされたキーボードを備えたデバイスがあるとします。ユーザーがキーを押すと、そのキーのASCIIコードがメモリ位置0xff00
(たとえば)に表示されます。 、その後、
char *kbdata = 0xff00;
あなたが押されるキーを待ちたい時はいつでも、あなたはポーリングすることができます:
だから、コードで始まる
char key = *kbdata;
while (key == 0)
key = *kbdata;
ここでの唯一の問題はということですコンパイラは、コード中の何も*kbdata
を変更していないので、コードが機能しなくなるようにアクセスを最適化することができます。ほとんどの場合、キーに*kbdata
がロードされ、その後無限ループに入ります。
volatileをkbdata
と指定すると、コンパイラはアクセスを最適化しようとしないため、コードが期待どおりに機能するはずです。
関連する問題
- 1. 揮発性のconst、揮発性レジスタ、C++での揮発性の静的
- 2. C#の非揮発性オブジェクト
- 3. C++の揮発性クラスメンバー
- 4. C#で揮発性とThread.MemoryBarrier
- 5. C#とCの揮発性の違い
- 6. は、揮発性
- 7. C++揮発物、不揮発メンバー
- 8. 揮発性変数
- 9. スカラ:不揮発性
- 10. 揮発性同等
- 11. 揮発性のconstポインタ
- 12. アクセシビリティの揮発性変数
- 13. 揮発性EquivalenceClassにはsortref
- 14. ビュー対揮発性テーブル?
- 15. スレッドセーフ(揮発性なし)
- 16. C:「ゲッター」機能や、中断して静的揮発性を利用し
- 17. C:関数への揮発性ポインタを宣言する
- 18. 揮発性資格の喪失
- 19. Javaの揮発性、同期、アトミック例
- 20. は揮発性の変数ですか?
- 21. asp.netの不揮発性グローバル変数
- 22. 揮発性の変数をキャストする
- 23. 未使用の揮発性変数
- 24. 揮発性と同期の差
- 25. 例逆アセンブリで揮発性を示すCコード?
- 26. C++で揮発性イテレータを宣言する方法
- 27. 揮発性コピーコンストラクタとは何ですか?
- 28. 揮発性変数によるピルトバックバックエラー
- 29. エクセルVBAスタティック(不揮発性)変数 - ユーザーフォーム
- 30. は、Scalaでは、不揮発性上限
参照http://stackoverflow.com/questions/232472/what-is-the-diflations-in-the-deeclarations-in-c – RBerteig
参照http://stackoverflow.com/questions/246127/why-is揮発性 - 必要 - イン - c – RBerteig