请告诉我对给定函数的调用将返回什么以及如何返回?代码:
typedef struct {
int size;
ptrdiff_t index;
void (*inlet) ();
int argsize;
ptrdiff_t argindex;
} CilkProcInfo;
/*
* Returns a pointer to the slow version for a procedure
* whose signature is p.
*/
/* the function definition is - */
static void (*get_proc_slow(CilkProcInfo *p)) () {
return p[0].inlet;
}
/*The function gets called as -*/
(get_proc_slow(f->sig)) (ws, f);
/*where f->sig is a pointer to CilkProcInfo struct*/
最佳答案
在 CilkProcInfo
结构中,inlet
是一个指向函数的指针,该函数采用未指定数量的参数并且不返回值,就像void foo();
。
在行
(get_proc_slow(f->sig)) (ws, f);
get_proc_slow(f->sig)
调用返回此函数指针,因此它相当于
(f->sig[0].inlet) (ws, f);
因此,如果您的f->sig[0].inlet
指向函数foo()
,则相当于调用
foo (ws, f);
我应该承认 static void (*get_proc_slow(CilkProcInfo *p)) () {...
语法对我来说有点陌生。
关于c - 函数指针疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635704/