我一直在这里阅读交流代码.我不明白这种typedef:
typedef const char * (*Responder)( int p1);
Run Code Online (Sandbox Code Playgroud)
是p1响应者的参数?Responder是const char吗?
继这个关于函数指针的优秀SO答案之后 ; 给定一个在C中定义的函数指针,如:
typedef void (*Callback)(int argument);
Callback my_callback = 0;
Run Code Online (Sandbox Code Playgroud)
如何检查回调函数指针是否已分配非空值?
my_callback == 0还是&my_callback == 0?
在读这个(精神病学给出的答案)时,我理解了如何输入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语言标准: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)。它甚至不存在于拆卸中!
此语言功能有什么作用?除了简化函数指针之外,它还能用于什么?
我想知道是否可以使用定义函数类型typedef,我尝试了以下语法:
typedef int (*) (void *, void *) order;
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。错误信息 :expected identifier or '(' before ')' token