They are just cast into void.
Esempi C - Chiamare una funzione all'uscita dal programma
Il primo esempio mostra l'utilizzo della funzione atexit
, che viene utilizzata per registrare una funzione dichiarata come
void function();
da chiamare all'uscita dal programma, sia che questa avvenga a causa di un ritorno da main
, sia tramite una chiamata esplicita a exit
.
La registrazione avviene passando a atexit
un puntatore alla funzione di chiusura:
#include <stdio.h> #include <stdlib.h> void close_function(); int main(int argc, char *argv[]) { printf("Inizio ...\n"); atexit(close_function); } void close_function() { printf("... Fine.\n"); }
Versione con parametri
Nei casi in cui e' utile passare parametri alla funzione di chiusura, si puo' utilizzare la funzione on_exit
, che prende come parametro un puntatore ad una funzione del tipo
void function(int status, void *argp);
Quando la funzione viene chiamata il valore di status
viene impostato allo stato con cui viene chiamata exit
e il secondo parametro al puntatore passato come secondo argomento di on_exit
.
Ricordiamo infine che il un puntatore a void rappresenta un puntatore ad un tipo qualunque; occorre poi effettuare il cast (che potrebbe anche essere implicito ma e' stato scritto esplicitamente per chiarezza) ad un puntatore al tipo corretto.
#include <stdio.h> #include <stdlib.h> #define EXIT_PARAM_LENGTH 2 void close_function(int status, void *argp); int main(int argc, char *argv[]) { int val[] = {10, 2}; printf("Inizio ...\n"); on_exit(close_function, val); exit(3); } void close_function(int status, void *argp) { int i; int *arg = (int *)argp; printf("Stato uscita: %d\n", status); for(i=0; i<EXIT_PARAM_LENGTH; i++) printf("Parametro %d: %d\n", i, arg[i]); printf("Fine.\n"); }