2014-12-14 19 views

risposta

19

Significa che interrupt_handler è digitare sinonimo per la funzione, che restituisce void e non specifica i suoi parametri (la cosiddetta dichiarazione di vecchio stile). Vedere l'esempio seguente, dove foo_ptr viene utilizzato come puntatore a funzione (questo è caso speciale in cui non sono necessarie parentesi):

#include <stdio.h> 

typedef void interrupt_handler(); 

void foo() 
{ 
    printf("foo\n"); 
} 

int main(void) 
{ 
    void (*foo_ptr_ordinary)() = foo; 
    interrupt_handler *foo_ptr = foo; // no need for parantheses 

    foo_ptr_ordinary(); 
    foo_ptr(); 

    return 0; 
} 
+0

Ho questa funzione cpu_boot vuoto (core uint, interrupt_handler bootfunc, uint SerialNo) e nella discussione bootfunc i vuoi passare i seguenti argomenti: Task boot_task, int argl, void * args. L'attività è di tipo typedef int (* Task) (int, void *); Come posso implementarlo? qualcosa come la funzione wrapper? @cmbasnett –

+0

@LefterisSarantaris: preferirei farlo in una domanda separata. Non dimenticare di descrivere ciò che hai già provato, spiega il tuo problema e aggiungine qualche esempio minimale. –

9

Si tratta di una dichiarazione di un typedeffunction pointer con una firma particolare (in questo caso una funzione con un ritorno void e senza argomenti).

Vedi What is a C++ delegate? (risposta in alto, l'opzione 3)

Problemi correlati