У меня есть этот код:
#include <stdio.h> int getAns(void); int num; int main() { int (*current_ans)(void); current_ans = &getAns; // HERE printf("%d", current_ans()); } int getAns() { return num + 3; }
Однако возможно ли иметь в месте // HERE что-то, что позволяет следующей строке быть printf("%d", current_ans);, которая обращается к getAns () окольным путем?
// HERE
printf("%d", current_ans);
Хотя я согласен с ответом Пьера,
#define current_ans current_ans()
сделает код очень большим нечитаемым
Я подозреваю, что вы не можете, потому что () необходимо, чтобы сообщить компилятору, что это вызов функции. Однако, если вы действительно хотите это сделать, вы можете сделать:
()
Нет, потому что current_ans и current_ans() это разные вещи. Без скобок и current_ans, и getAns являются указателями на функции, в то время как в скобках они являются вызовами функций. Если вы думаете о скобках как о разыменовании указателя путем выполнения кода, по сути, вы просите рассматривать указатель и содержимое указателя как одно и то же.
current_ans
current_ans()
getAns
А как насчет "#define current_ans myRoundaboutFnName ()"