1

誰かがこの C スニペットを解読するのを手伝ってくれることを望んでいました:

typedef int (DEFCALL *getFieldVal)(int key, int fieldSelect, char *name)

DEFCALL はコードの前半で定義されていますが、

#define DEFCALL

だから、私DEFCALLはただの空白だと思います、そして私は効果的に見ています

typedef int (*getFieldVal)(int key, int fieldSelect, char *name)

getFieldVal を、引数 int、int、および char* を取り、整数を返す関数へのポインターとして定義します。しかし、DEFCALL私は不思議に思っています。確認したかった。

4

2 に答える 2

6

このマクロは、呼び出し規約を関数型に追加する余地を残しています。

于 2013-04-02T20:57:19.970 に答える
4

typedef関数ポインタ型を定義しています。これDEFCALLは、関数によって使用されるプラットフォーム固有の呼び出し規則情報を指定するために定義できるプリプロセッサ マクロです。この場合、何も定義されていないため、コンパイラはデフォルトの呼び出し規約 (通常はcdecl.

于 2013-04-02T20:57:30.223 に答える