Es un puntero a una función en NULL
.
void(*)()
es la definición de un puntero a una función que no toma argumentos que no devuelve nada; puede que el nombre:
typedef void(*my_func)();
continuación, en su ejemplo usted tiene un reparto:
(my_func)0
produce un puntero a una función my_func
, es decir, una función de tomar nada y devolver nada.
Luego lo desreferenciamos con el asterisco inicial (que es innecesario, afaik), y luego lo llama.
Así que está llamando a una función que no toma argumentos y no devuelve nada de lo que le sucede a la vida en la dirección cero.
Esto es (por lo general) un comportamiento indefinido, y se bloqueará instantáneamente en muchas plataformas. (No es un comportamiento indefinido si se pone una función en la dirección cero, al menos yo no creo que era.)
Extraño llamar a esto una función oculta. –
"No es un comportamiento indefinido ... ¡es una característica!". No, es un comportamiento indefinido –