Swa*_*nil 2 c pointers function return-value
请告诉我给定函数的调用将返回什么以及如何?代码:
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*/
Run Code Online (Sandbox Code Playgroud)
在您的CilkProcInfo
结构中,inlet
是一个指向函数的指针,该函数接受一个未指定数量的参数并且不返回值,例如void foo();
.
在线
(get_proc_slow(f->sig)) (ws, f);
Run Code Online (Sandbox Code Playgroud)
该get_proc_slow(f->sig)
调用返回此函数指针,因此它等效于
(f->sig[0].inlet) (ws, f);
Run Code Online (Sandbox Code Playgroud)
因此,如果您f->sig[0].inlet
指向该功能foo()
,则相当于该呼叫
foo (ws, f);
Run Code Online (Sandbox Code Playgroud)
我应该承认static void (*get_proc_slow(CilkProcInfo *p)) () {...
语法对我来说有点陌生.