Я думаю, что я могу страдать от страшной болезни "случайного программиста", по крайней мере, когда речь идет о typedefs и указателях функций.Поэтому я экспериментировал со всеми видами комбинаций, включающих их, чтобы проанализировать результаты на основе всех полученных результатов.
Но поскольку я продолжал пробовать разные комбинации, вместо того, чтобы анализировать результаты, я сейчас просто потерян в процессе.
Я надеюсь, что вы, ребята, поможете мне разобраться в этом беспорядке.
Первый пример кода
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).