typedef int (*init_fnc_t)(void) 如何理解

  最近在看uboot啓動流程源碼中看到了這一個用法,特此記錄學習。

 

截取u-boot部分代碼出來如下:

typedef int (*init_fnc_t)(void);

static init_fnc_t init_sequence_f[] = {

	setup_ram_buf,
	setup_mon_len,
	initf_console_record
}

typedef int (*init_fnc_t)(void)應該如何進行理解?

我們都知道一般typedef是用於取別名的。這裏可以理解爲 爲一種返回值爲int,參數爲void的函數指針取了一個類型名爲init_fnc_t,所以之後我們就可以直接用init_fnc_t去定義這種函數指針類型了。

從static init_fnc_t init_sequence_f[ ] 可以知道,這就是一個用於裝函數指針的數組(裏面的函數都是以int爲返回值,void爲參數)。

去看了一下在uboot源碼中這幾個函數的定義setup_ram_buf,  fdtdec_setup, initf_console_record 如下,全部都是int爲返回值,void爲參數的函數。

static int setup_ram_buf(void)
{
    ....
}

static int setup_mon_len(void)
{
    ....
}

static int initf_console_record(void)
{
    ....
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章