2

我有这个代码:

#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() ?

4

4 回答 4

6

虽然我同意皮埃尔的回答,但

#define current_ans current_ans()

会使代码非常不可读

于 2009-10-07T02:54:16.410 回答
5

我怀疑你不能,因为()有必要告诉编译器这是一个函数调用。但是,如果你真的想这样做,你可以这样做:

#define current_ans current_ans()
于 2009-10-07T02:37:01.023 回答
1

“#define current_ans myRoundaboutFnName()”怎么样?

于 2009-10-07T02:36:07.860 回答
1

不,因为current_anscurrent_ans()是不同的东西。没有括号,两者current_ans都是getAns函数指针,而有括号,它们都是函数调用。如果您将括号视为通过执行代码来解除对指针的引用,那么本质上您所要求的是将指针和指针的内容视为同一对象。

于 2009-10-07T09:22:33.607 回答