开发者

Access a function pointer without parenthesis

I have this code:

#include <stdio.h>

int getAns(void);
int num;

int main() 
{
    int (*current_ans)(void);
    c开发者_如何学运维urrent_ans = &getAns;
    // HERE
    printf("%d", current_ans());    

}

int getAns()
{
    return num + 3;
}

However, is it possible to have something in the // HERE spot that allows the next line to be printf("%d", current_ans); which accesses getAns() in a roundabout way?


Though I agree with pierr's answer, the

#define current_ans current_ans()

will make the code very much unreadable


I suspect you can not , because the () is necessary to tell the compiler it is an function call. However, if you really want to do it,you can do :

#define current_ans current_ans()


What about "#define current_ans myRoundaboutFnName()"


No because current_ans and current_ans() are different things. Without the parenthesis, both current_ans and getAns are a function pointers, while with parenthesis, they are function calls. If you think of the parenthesis as sort of dereferencing the pointer by executing the code, essentially what you are asking is to treat the pointer and the contents of the pointer as one in the same.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜