(*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 );
答案 0 :(得分:2)
PREDir
是指向结构的指针。该结构包含一个名为cfun
的成员,该成员是一个指向函数的指针,该函数接受未指定数量的参数而不返回任何内容。
在
(*PREDir->cfun) ( d, &tf );
使用两个参数调用该函数,d
和指向tf
的指针。
答案 1 :(得分:0)
cfun
是一个指向函数的指针,该函数接受任何参数并返回void。
因此,(*PREDir->cfun) ( d, &tf );
会使用参数PREDir->cfun
和d
(地址为tf)调用当前分配给&tf
的函数。
确保PREDir
指向已分配SCANNING
字段的cfun
对象,否则您将获得未定义的行为。