C では、構造体のメンバーを揮発性としてどのように宣言しますか?

struct 以外とまったく同じ フィールド:

#include <stdio.h>
int main (int c, char *v[]) {
    struct _a {
        int a1;
        volatile int a2;
        int a3;
    } a;
    a.a1 = 1;
    a.a2 = 2;
    a.a3 = 3;
    return 0;
}

struct 全体をマークできます "volatile struct _a {...}" を使用して揮発性として ただし、上記の方法は個々のフィールド用です。


この記事によれば、かなり簡単です:


ここで間違った答えがあったので、C/C++ の volatile を明確にする必要があります。私は 1994 年からマイクロコントローラをプログラミングしており、このキーワードは非常に便利で頻繁に必要とされます。

volatile を使用してもコードが壊れることはありません。使用するリスクはありません。キーワードは基本的に、変数がコンパイラによって最適化されないようにします。このキーワードを使いすぎると、プログラムが少し大きくなり遅くなるという最悪の事態が発生します。

変数にこのキーワードが必要な場合は次のとおりです。- 割り込み関数の内部に書き込まれる変数があります。AND- この同じ変数が、割り込み関数の外側で読み取られるか書き込まれます。または、使用する優先度の異なる 2 つの割り込み関数がある場合変数の場合は、'volatile' も使用する必要があります。

それ以外の場合、キーワードは必要ありません。

ハードウェア レジスタに関しては、プログラムで変なことをしなければ、キーワードがなくても volatile として扱われるべきです。