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");
}