void fooPrint(void foo()) {
foo();
}void fooPrint(void (*foo)()) {
foo();
}sizeof(foo) == sizeof(&foo). По сути тут компилятор просто игнорирует операцию взятия адреса от функции.typedef void (*foo_t)();
void fooPrint(foo_t foo) {
foo();
}