ポインターと構造体についていくつか読んでいましたが、理解できません。マイクロコントローラーのヘッダーファイルに次の内容があります。
#define NVIC_BASE (SCS_BASE + 0x0100) /*< NVIC Base Address */ (1)
#define NVIC ((NVIC_Type *) NVIC_BASE) /*< NVIC configuration struct */ (2)
後者のコードでは、次のようなものがあります。
NVIC->ICER[0] = (1<<4);
これは(定義のために)次のものに対応していますか?
(NVIC_Type *) NVIC_BASE).ICER[0] = (1<<4);
NVIC_Type は、割り込みを設定およびクリアするためのいくつかのレジスタを備えた単なる typedef 構造体です。(2) 構造体の開始アドレスが NVIC_BASE アドレスであることを何とか管理していることは明らかです。しかし、どのように?
括弧内のこの構造体 (NVIC_Type *) の後のポインタ (*) は何ですか?