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 型のデータが格納されたアドレスなんだな」と認識してくれるようになります.

 ポインタの基本中の基本だった。