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

私はpierrの答えに同意しますが、

#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 に答える