Non capisco il significato di typedef void interrupt_handler();
. Qualcuno potrebbe spiegarlo con alcuni esempi?Cosa significa questa dichiarazione typedef void foo(); significare?
typedef void interrupt_handler();
Non capisco il significato di typedef void interrupt_handler();
. Qualcuno potrebbe spiegarlo con alcuni esempi?Cosa significa questa dichiarazione typedef void foo(); significare?
typedef void interrupt_handler();
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;
}
Si tratta di una dichiarazione di un typedef
function 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)
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 –
@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. –