这个陈述是什么声明的?

时间:2009-03-27 05:34:53

标签: c types static declaration

struct ast_channel *(* const requester)(const char *type, int format, void *data, int *cause);

这条线的含义是什么?

第二个问题:使用

有什么好处
static struct hello
{
    int a;
    chat b;
};

简单地

struct hello
{
    int a;
};

另外,static char p[]char p[];之间有什么区别?

5 个答案:

答案 0 :(得分:5)

我的C有点生疏:requester是一个指向函数的常量指针,该函数返回指向ast_channel结构的指针。

参见这些文章:

static关键字的含义取决于声明在代码中的显示位置。在函数内部,它表示变量不应该放在堆栈上而是放在数据段中,并且当函数超出范围(即没有运行)时它是持久的。在函数外部,它表示该变量在其所在文件之外是不可访问的。

答案 1 :(得分:4)

答案 2 :(得分:1)

第一个是函数的常量指针的声明(以及定义),它返回指向struct ast_channel的指针并接受最后一对parantheses中列出的参数。此函数指针名为requester

static的含义实际上取决于上下文。然而,在之前的答案中已对此进行了解释。

答案 3 :(得分:0)

第一行是一个函数指针,类型为ast_channnel。需要提供更多代码以充分解释其用途。是在结构内部定义的吗?如果是这样,它将通过structname-> requester(... args ...)输入。

This tutorial可能会帮助您理解这一点。其他人已经提供了链接,以找出“静态”意味着什么。

答案 4 :(得分:0)

cdecl.org是你的朋友:

struct ast_channel *(* const requester)(const char *, int , void *, int *) - 将请求者声明为const指向函数的指针(指向const char的指针,int,指向void的指针,指向int的指针)返回指向struct ast_channel的指针