2

組み込みファームウェアで多くのvolatile変数を使用していますが、ほとんどの場合、値が最新であることを確認する必要がある関数内のポイントは 1 つだけです (開始時)。しかし、関数の残りの部分は同じ変数名を参照しており、その間に値が変更される可能性があり、非常に予期しないコード フロー/結果が生成されます。関数内で一時変数を使用することでこれを解決できることはわかっていますが、より良い解決策を探していました。

ここで、変数全体を としてマークする代わりにvolatile、変数を volatile とマークされているかのように読み取りたいという特別なキーワードを使用してコンパイラ (gcc) に指示できる方法があるのではないかと考えていたので、そのキーワードのみを使用できます。関数の最初に一度?

4

2 に答える 2

0

変数がメモリ内にあり、組み込みシステムがそれをサポートしている場合、メモリ バリアを使用できます。値を読み込んでいる間、何もメモリにアクセスしないようにします。

于 2013-10-04T20:06:09.963 に答える