访问不带括号的函数指针

827*_*827 2 c macros pointers function parentheses

我有这个代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

但是,是否有可能在// HERE现场允许下一行以printf("%d", current_ans);环形方式访问getAns()?

Alp*_*neo 6

虽然我同意皮尔的答案,但是

#define current_ans current_ans()
Run Code Online (Sandbox Code Playgroud)

将使代码非常难以理解

  • +1.实际上放置该宏会使`main`代码变成垃圾. (2认同)

pie*_*fou 5

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

#define current_ans current_ans()
Run Code Online (Sandbox Code Playgroud)