組み込みC開発でvolatileを使用する
volatileキーワードを使用してコンパイラが判断できない方法で変化する可能性のあるオブジェクトに最適化を適用しないようにするためのキーワードの使用に関するいくつかの記事とStack Exchangeの回答を読んでいます。 ADCから読み取り(変数を呼び出しましょうadcValue)、この変数をグローバルとして宣言volatileしている場合、この場合はキーワードを使用する必要がありますか? volatileキーワードを使用せずに // Includes #include "adcDriver.h" // Global variables uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } volatileキーワードを使用する // Includes #include "adcDriver.h" // Global variables volatile uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } 私の場合(ハードウェアから直接変更されるグローバル変数)のベストプラクティスによると、使用することvolatileは必須ですが、デバッグ時に両方のアプローチに違いは見られないため、この質問をしています。