11

それができることはわかったが、その趣旨がよくわからない。

4

2 に答える 2

5

const変数について同じ考えを参照しているようにvolatile聞こえますが、そうではありません。現在のconstコードでは変数を変更できません。volatile変数は、現在のコードの外にある外部エンティティによって変更される場合があります。const volatileプログラムが予測できないときにコンピューターによって変更される変数 (特にメモリ マップト レジスタのようなもの)を持つことができますが、コードを直接変更することはできません。または("cv-qualification") を変数const_castに追加または削除するために使用できます。constvolatile

于 2010-06-12T22:48:32.577 に答える
4

constvolatileは直交しています。

constデータが読み取り専用であることを意味します。

volatile変数が外部の理由により変更される可能性があることを意味するため、コンパイラは変数が参照されるたびにメモリから変数を読み取る必要があります。

そのため、削除constすると、読み取り専用の場所であった場所を書き込むことができます (コードには、その場所が実際に変更可能であるという特別な知識が必要です)。未定義の動作を引き起こす可能性があるため、削除volatileして書き込むべきではありません (7.1.5.1/7 のためIf an attempt is made to refer to an object defined with a volatile-qualified type through the use of an lvalue with a non-volatile-qualified type, the program behaviour is undefined.) 。

于 2010-06-12T22:49:39.323 に答える