知识点tips
//定义一个指针类型,该指针类型可以表示int xxx(void)函数指针
typedef int (init_fnc_t)(void)
int arch_cpu_init(void)
{
s5p_set_cpu_id();
return 0;
}
...
int dram_init(void)
{
return 0;
}
//定义一个指针数组init_sequence,里面每一个内容都是函数的指针
init_fnc_t *init_sequence[] = {
arch_cpu_init, //arch_cpu_init这是一个函数,此处表示将arch_cpu_init函数的指针保存
timer_init,
env_init,
init_baudrate,
serial_init,
console_init_f,
display_banner,
dram_init,
NULL,
};
void func_init(void)
{
init_fnc_t **init_fnc_ptr;
//初始化指针数组中的所有函数
for(init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
{
if((*init_fnc_ptr)() != 0)
{
return;
}
}
}