一个比较巧妙的C用法,定义了一个结构体,该结构体的成员都是指针函数。
typedef struct {
void (*nand_reset)(void);
void (*wait_idle)(void);
void (*nand_select_chip)(void);
void (*nand_deselect_chip)(void);
void (*write_cmd)(int cmd);
void (*write_addr)(unsigned int addr);
unsigned char (*read_data)(void);
}t_nand_chip;
然后分别定义了几种不同的函数
static void s3c2410_nand_reset(void)
{
...................
}
static void s3c2440_nand_reset(void)
{
.....................
}
然后初始化的时候用
if ((GSTATUS1 == 0x32410000) || (GSTATUS1 == 0x32410002))
{
nand_chip.nand_reset = s3c2410_nand_reset;
........
}
对外部提供统一的接口
static void nand_reset(void)
{
nand_chip.nand_reset();
}