よし、extern 定義がどのように機能するかは理解できたが、それらを配置するのに「最適な」場所が何かはわからない。次のファイル構造を考慮してください。
- main.c / main.h / global.h
- drv_adc.c / drv_adc.h
- drv_pwm.c / drv_pwm.h
ご想像のとおり、これは小さなマイクロコントローラーでは非常に一般的です。2 つのドライバーは、ハードウェアの異なる部分で動作し、相互依存関係はありません。どちらのドライバーも、何かが発生したことを示し、main.c で処理されるフラグ (adc_irq_occured、pwm_irq_occured など) を設定できます。
ここで、「extern bool adc_irq_occured;」を配置する 2 つのアプローチを考えることができます。国旗。
- drv_adc.h: ADC ドライバーに属しているため、ヘッダー ファイルに追加して、main.c でインスタンス化することができます。
- ロジックを逆にして、extern 宣言を main.h (または必要に応じて global.h) に配置し、drv_adc.c でインスタンス化します。
ここで質問: ここで推奨されるオプションはどれですか? そのようなトピックについて読むことができる良い本はありますか?