gpt4 book ai didi

c - 函数指针疑问

转载 作者:行者123 更新时间:2023-12-02 09:00:28 25 4
gpt4 key购买 nike

请告诉我对给定函数的调用将返回什么以及如何返回?代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com