相关疑难解决方法(0)

理解c中的typedef

我一直在这里阅读交流代码.我不明白这种typedef:

typedef const char * (*Responder)( int p1);
Run Code Online (Sandbox Code Playgroud)

p1响应者的参数?Responder是const char吗?

c typedef

1
推荐指数
1
解决办法
288
查看次数

检查typedef定义的函数指针是否为null

这个关于函数指针的优秀SO答案之后 ; 给定一个在C中定义的函数指针,如:

typedef void (*Callback)(int argument);
Callback my_callback = 0;
Run Code Online (Sandbox Code Playgroud)

如何检查回调函数指针是否已分配非空值?

my_callback == 0还是&my_callback == 0

c null pointers function-pointers

1
推荐指数
1
解决办法
1639
查看次数

指向函数的指针 - 一种不同的声明方法

在读这个(精神病学给出的答案)时,我理解了如何输入type并调用函数指针.但是在考虑了typedef之后,我尝试了一点,并且能够以这种方式调用函数:

typedef void func(unsigned char);
void test(unsigned char a);

int main()
{
    unsigned char b=0U;
    func *fp=&test;
    while(1)
    {
        fp(b);
        b++;
    }
}

void test(unsigned char a)
{
    printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)

我不明白使用函数指针语法和这种方法有什么区别?两者似乎几乎产生相同的功能.

c pointers

1
推荐指数
1
解决办法
362
查看次数

Typedef函数,它有用吗?

我正在深入研究语言,因此我可以了解代码中正在发生的事情,而不必打印一些东西并观察并观察发生的情况。

最近,在寻找对类函数表的更好实现时,我发现自己偶然发现了这种C语言标准:http : //www.iso-9899.info/wiki/Typedef_Function_Type

我已经尝试过了,它似乎可以正常工作:

typedef void fnr(int x);

main()
{
    fnr t;
}
Run Code Online (Sandbox Code Playgroud)

对于我来说,寻找将功能打包到我的结构中的方式似乎是光荣的一天,直到我意识到这 fnr t;没有我想要的有用。它既不能分配,也不能以我希望的正确方式使用(对于C用户而言可能是lambda)。它甚至不存在于拆卸中!

此语言功能有什么作用?除了简化函数指针之外,它还能用于什么?

c typedef function-pointers function

1
推荐指数
1
解决办法
145
查看次数

如何用typedef定义函数类型?

我想知道是否可以使用定义函数类型typedef,我尝试了以下语法:

typedef int (*) (void *, void *) order;
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。错误信息 :expected identifier or '(' before ')' token

c typedef function-declaration

0
推荐指数
2
解决办法
67
查看次数