2015-10-19 78 views
-1

B.A.T.M.A.N./A.L.F.R.E.D。 OpenMesh項目:void(* foo)(void):最新(void)的含義

function read_answer實例化一個指針類型struct vis_print_ops被定義

struct vis_print_ops 
{ 
    void (*preamble)(void); 
    void (*interfaces)(uint8_t iface_n, struct vis_iface *ifaces); 
    void (*entries)(uint8_t entries_n, struct vis_entry *vis_entries, 
      uint8_t iface_n, struct vis_iface *ifaces); 
    void (*postamble)(void); 
}; 

現在看

void (*preamble)(void) 

你能告訴我什麼是最後一個(空)的含義?是不是

void (*preamble) 

夠了嗎?

+4

它的重要性意味着它是一個沒有參數的函數指針。 – Linus

回答

5

最後的void表示函數中沒有參數將被preamble指向。

void (*preamble)是不夠的,因爲這只是一個指向void的指針,而void (*preamble)(void)是一個函數指針。

+1

'void(* preamble)()'會好嗎? –

+3

@卡特彼勒,不,那是不一樣的。這意味着'preamble'需要一些未定義的參數。 – kay

5

這意味着你聲明一個沒有參數的函數指針。這並不比這更復雜。它類同一樣的東西: int main(void)int main()

兩者是相同的。注意,儘管正如註釋中所討論的那樣,如果您聲明一個沒有void關鍵字的函數指針,並且只有空括號,它會指定一個帶有未定義參數的函數指針。

+0

@cad正確,我編輯了我的答案。謝謝! – Linus

相關問題