0

(*PREDir->cfun) ( d, &tf );下面的代码将负责什么:

typedef struct {
    FILE    *fp;
    char    queue[ NAMELEN ];
    char    fullpath[ NAMELEN ];
    char    fname[ NAMELEN ];
} TRW;

typedef struct {
    char    *dir_to_scan;
    void    (*cfun)();
} SCANNING;

static TRW  tf;
static SCANNING *PREDir;
char *d;

(*PREDir->cfun) ( d, &tf );
4

2 回答 2

2

PREDir是指向结构的指针。该结构包含一个名为 的成员cfun,它是一个指向函数的指针,该函数采用未指定数量的参数并且不返回任何内容。

(*PREDir->cfun) ( d, &tf );

d使用两个参数和一个指向. 的指针调用该函数tf

于 2013-10-25T13:55:04.770 回答
0

cfun是一个指向接受任何参数并返回 void 的函数的指针。

因此将使用参数和 (tf 的地址)(*PREDir->cfun) ( d, &tf );调用当前分配给的函数。PREDir->cfund&tf

确保PREDir指向SCANNING已分配其字段的对象,cfun否则您将获得未定义的行为。

于 2013-10-25T13:57:47.783 回答