Я думаю, что, возможно, страдаю ужасной болезнью "случайного программиста", по крайней мере, когда дело доходит до определений типов и указателей функций. Итак, я экспериментировал со всевозможными комбинациями, включающими их, чтобы анализировать результаты на основе всех выходных данных, которые я получаю.
Но поскольку я продолжал пробовать разные комбинации, вместо того, чтобы анализировать результаты, я просто потерялся в процессе.
Я надеюсь, что вы, ребята, поможете мне разобраться в этой неразберихе.
Первый пример кода
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = &do_something;
pr(); // Hello World
Второй пример кода
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = do_something;
pr(); // Hello World
Как работают оба приведенных выше примера кода, это как если бы '&' не влияло на имя функции
третий пример кода
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print pr;
pr = do_something; // compile error
pr = &do_something; // compile error
pr();
Я надеялся, что один из вышеупомянутые задания работать здесь но блин! Я действительно не понимаю указатели на функции (и, возможно, typedef тоже).