功能指针疑问

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)

Wer*_*sey 5

在您的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)) () {...语法对我来说有点陌生.

  • 没有.`void(*inlet)()`是一个指向函数的指针,该函数接受_unspecified_参数并且不返回任何值,而不返回_no_参数. (3认同)