令人困惑的C typedef语法

时间:2013-04-02 20:48:32

标签: c typedef c-preprocessor

希望有人可以帮我解读这个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定义为指向带有args int,int和char *的函数的指针,并返回一个整数。但DEFCALL让我感到疑惑。想要确定。

2 个答案:

答案 0 :(得分:6)

宏为函数类型添加了一个调用约定。

答案 1 :(得分:4)

typedef定义了一个函数指针类型。 DEFCALL是预处理器宏,可以定义它以指定函数使用的任何特定于平台的调用约定信息。在这种情况下,它被定义为没有任何结果导致编译器生成默认调用约定,通常为cdecl

相关问题