H8(その8)
ステップ2を読み進めているけど、
p65のプログラム
#define H8_3069F_SCI0 ((volatile struct h8_3069f_sci *)0xffffb0
で、0xffffb0の前の型が書いてある理由がわからない。
それと、
static struct{
volatile struct h8_3069f_sci *sci;
} regs[SERIAL_SCI_NUM]={.........}
構造体の配列を使っているけど、メンバが1個しかないのに、
なぜ構造体の配列にしているのかわからない。
追記
0xffffb0の下りは、以下のリンクの真ん中あたり、
http://www.eleki-jack.com/h8/2009/09/h8-21h8c.html
したがって,ここでただ単に「0xffe9」と書いただけではこれは単なる整数値であって,コンパイラはこの数値がメモリのアドレスを意味しているとは 思ってくれません.それを教えてやるために整数「0xffe9」を「unsigned char 型へのポインタ」としてキャスト変換し,
(unsigned char *)0xffe9
と書きます.するとコンパイラは「この0xffe9 というのは,なにかunsigned char 型のデータが格納されたアドレスなんだな」と認識してくれるようになります.
ポインタの基本中の基本だった。