C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++変数はconstとvolatileの両方にすることができますか?


はい、C++変数はconstとvolatileの両方である必要があります。これは、読み取り専用のハードウェアレジスタ、または別のスレッドの出力などの状況で使用されます。 Volatileは、現在のスレッドの外部の何かによって変更される可能性があることを意味し、Constは、(const宣言を使用しているプログラムで)書き込みを行わないことを意味します。


  1. なぜC++で揮発性修飾子を使用するのですか?

    揮発性とは2つのことを意味します- 変数の値は、コードを変更しなくても変更される可能性があります。したがって、コンパイラが変数の値を読み取るときはいつでも、それが最後に読み取られたときと同じであるとは見なされない場合や、最後に格納された値と同じであるとは見なされない場合がありますが、再度読み取る必要があります。 揮発性変数に値を格納する行為は、外部から観察できる「副作用」であるため、コンパイラは値を格納する行為を削除することはできません。たとえば、2つの値が連続して格納されている場合、コンパイラは実際に値を2回格納する必要があります。 例として: i = 2; i = i;

  2. C ++の#defineとconstキーワードの違いは何ですか?

    #defineディレクティブはプリプロセッサディレクティブです。プリプロセッサは、コンパイラがマクロを認識する前に、これらのマクロを本体に置き換えます。これは、ソースコードの自動検索と置換と考えてください。 const変数宣言は、言語で実際の変数を宣言します。これは、実際の変数のように使用できます。アドレスを取得し、渡し、キャストし、変換します。 コンパイラの最適化がないと、さまざまなケースでこれらの両方に関連するメモリ割り当ての隠れたコストが発生します。しかし、適切に最適化すれば、それらはほぼ同じになります。また、プリプロセッサマクロにはスコープがありませんが、const値にはスコープがあ