我有这段代码:
#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()的内容?
答案 0 :(得分:6)
虽然我同意皮尔的回答,但
#define current_ans current_ans()
会使代码非常不可读
答案 1 :(得分:5)
我怀疑你不能,因为()
是必要的告诉编译器它是一个函数调用。
但是,如果你真的想要这样做,你可以这样做:
#define current_ans current_ans()
答案 2 :(得分:1)
“#define current_ans myRoundaboutFnName()”
怎么样?答案 3 :(得分:1)
不,因为current_ans
和current_ans()
是不同的事情。如果没有括号,current_ans
和getAns
都是函数指针,而使用括号,它们是函数调用。如果您将括号视为通过执行代码解除引用指针的类型,那么基本上您要求的是将指针和指针的内容视为同一个指针。